示例#1
0
 def _get_fextractor_instance(self, fextractor_type):
     fextractor_class = FeatureExtractor.find_subclass(fextractor_type)
     fextractor = fextractor_class(assets=self.assets,
                                   logger=self.logger,
                                   fifo_mode=self.fifo_mode,
                                   delete_workdir=self.delete_workdir,
                                   result_store=self.result_store,
                                   optional_dict=self.optional_dict)
     return fextractor
示例#2
0
 def _get_atom_features(self, fextractor_type):
     if self.feature_dict[fextractor_type] == 'all':
         fextractor_class = FeatureExtractor.find_subclass(fextractor_type)
         atom_features = fextractor_class.ATOM_FEATURES + \
                         (fextractor_class.DERIVED_ATOM_FEATURES
                          if hasattr(fextractor_class, 'DERIVED_ATOM_FEATURES')
                          else [])
     else:
         atom_features = self.feature_dict[fextractor_type]
     return atom_features
示例#3
0
 def _get_atom_features(self, fextractor_type):
     if self.feature_dict[fextractor_type] == 'all':
         fextractor_class = FeatureExtractor.find_subclass(fextractor_type)
         atom_features = fextractor_class.ATOM_FEATURES + \
                         (fextractor_class.DERIVED_ATOM_FEATURES
                          if hasattr(fextractor_class, 'DERIVED_ATOM_FEATURES')
                          else [])
     else:
         atom_features = self.feature_dict[fextractor_type]
     return atom_features
示例#4
0
 def _get_fextractor_instance(self, fextractor_type):
     fextractor_class = FeatureExtractor.find_subclass(fextractor_type)
     fextractor = fextractor_class(assets=self.assets,
                                   logger=self.logger,
                                   fifo_mode=self.fifo_mode,
                                   delete_workdir=self.delete_workdir,
                                   result_store=self.result_store,
                                   optional_dict=self.optional_dict
                                   )
     return fextractor
示例#5
0
    def run(self):
        """
        Do all the calculation here.
        :return:
        """

        # for each FeatureExtractor_type key in feature_dict, find the subclass
        # of FeatureExtractor, run, and put results in a dict
        for fextractor_type in self.feature_dict:

            # fextractor = self._get_fextractor_instance(fextractor_type)
            # fextractor.run()
            # results = fextractor.results

            fextractor_class = FeatureExtractor.find_subclass(fextractor_type)
            _, results = run_executors_in_parallel(
                fextractor_class,
                assets=self.assets,
                fifo_mode=self.fifo_mode,
                delete_workdir=self.delete_workdir,
                parallelize=self.parallelize,
                result_store=self.result_store,
                optional_dict=self.optional_dict,
                optional_dict2=self.optional_dict2,
            )

            self.type2results_dict[fextractor_type] = results

        # assemble an output dict with demanded atom features
        # atom_features_dict = self.fextractor_atom_features_dict
        result_dicts = [dict() for _ in self.assets]
        for fextractor_type in self.feature_dict:
            assert fextractor_type in self.type2results_dict
            for atom_feature in self._get_atom_features(fextractor_type):
                scores_key = self._get_scores_key(fextractor_type, atom_feature)
                for result_index, result in enumerate(self.type2results_dict[
                                                          fextractor_type]):
                    result_dicts[result_index][scores_key] = result[scores_key]

        self.results = map(
            lambda (asset, result_dict): BasicResult(asset, result_dict),
            zip(self.assets, result_dicts)
        )
示例#6
0
    def run(self):
        """
        Do all the calculation here.
        :return:
        """

        # for each FeatureExtractor_type key in feature_dict, find the subclass
        # of FeatureExtractor, run, and put results in a dict
        for fextractor_type in self.feature_dict:

            # fextractor = self._get_fextractor_instance(fextractor_type)
            # fextractor.run()
            # results = fextractor.results

            fextractor_class = FeatureExtractor.find_subclass(fextractor_type)
            _, results = run_executors_in_parallel(
                fextractor_class,
                assets=self.assets,
                fifo_mode=self.fifo_mode,
                delete_workdir=self.delete_workdir,
                parallelize=self.parallelize,
                result_store=self.result_store,
                optional_dict=self.optional_dict,
                optional_dict2=self.optional_dict2,
            )

            self.type2results_dict[fextractor_type] = results

        # assemble an output dict with demanded atom features
        # atom_features_dict = self.fextractor_atom_features_dict
        result_dicts = [dict() for _ in self.assets]
        for fextractor_type in self.feature_dict:
            assert fextractor_type in self.type2results_dict
            for atom_feature in self._get_atom_features(fextractor_type):
                scores_key = self._get_scores_key(fextractor_type,
                                                  atom_feature)
                for result_index, result in enumerate(
                        self.type2results_dict[fextractor_type]):
                    result_dicts[result_index][scores_key] = result[scores_key]

        self.results = map(
            lambda (asset, result_dict): BasicResult(asset, result_dict),
            zip(self.assets, result_dicts))
示例#7
0
 def _get_scores_key(self, fextractor_type, atom_feature):
     fextractor_subclass = FeatureExtractor.find_subclass(fextractor_type)
     scores_key = fextractor_subclass.get_scores_key(atom_feature)
     return scores_key
示例#8
0
 def _get_scores_key(self, fextractor_type, atom_feature):
     fextractor_subclass = FeatureExtractor.find_subclass(fextractor_type)
     scores_key = fextractor_subclass.get_scores_key(atom_feature)
     return scores_key