docstr: Identify dense feature normalization parameters
docstr_tok: ["Identify","dense","feature","normalization","parameters"]
code: def run_feature_identification(
      self, input_table_spec: TableSpec
  ) -> Dict[str, NormalizationData]:
      """Identify dense feature normalization parameters"""
      state_preprocessing_options = (
          self.model_manager.state_preprocessing_options
          or PreprocessingOptions()
      )
      state_features = [
          ffi.feature_id
          for ffi in self.model_manager.state_feature_config.float_feature_infos
      ]
      logger.info(f"state allowedlist_features: {state_features}")
      state_preprocessing_options = replace(
          state_preprocessing_options,
          allowedlist_features=state_features,
      )
  
      state_normalization_parameters = (
          identify_normalization_parameters(
              input_table_spec,
              InputColumn.STATE_FEATURES,
              state_preprocessing_options,
          )
      )
      if self.model_manager.discrete_action_names:
          return {
              NormalizationKey.STATE: NormalizationData(
                  dense_normalization_parameters=state_normalization_parameters
              )
          }
      # Run action feature identification
      action_preprocessing_options = (
          self.model_manager.action_preprocessing_options
          or PreprocessingOptions()
      )
      action_features = [
          ffi.feature_id
          for ffi in self.model_manager.parametric_action_feature_config.float_feature_infos
      ]
      logger.info(f"action allowedlist_features: {action_features}")
      action_preprocessing_options = replace(
          action_preprocessing_options,
          allowedlist_features=action_features,
      )
      action_normalization_parameters = (
          identify_normalization_parameters(
              input_table_spec,
              InputColumn.ACTION,
              action_preprocessing_options,
          )
      )
      return {
          NormalizationKey.STATE: NormalizationData(
              dense_normalization_parameters=state_normalization_parameters
          ),
          NormalizationKey.ACTION: NormalizationData(
              dense_normalization_parameters=action_normalization_parameters
          ),
      }
  
imports: import logging
  from dataclasses import replace
  from typing import Dict, List, Optional, Tuple
  import reagent.core.types
  import torch
  from reagent.core.dataclasses import dataclass, field
  from reagent.core.parameters import EvaluationParameters, NormalizationData, NormalizationKey, param_hash
  from reagent.data.data_fetcher import DataFetcher
  from reagent.data.manual_data_module import ManualDataModule
  from reagent.data.reagent_data_module import ReAgentDataModule
  from reagent.model_managers.model_manager import ModelManager
  from reagent.net_builder.synthetic_reward.single_step_synthetic_reward import SingleStepSyntheticReward
  from reagent.net_builder.unions import SyntheticRewardNetBuilder__Union
  from reagent.preprocessing.types import InputColumn
  from reagent.reporting.reward_network_reporter import RewardNetworkReporter
  from reagent.training import ReAgentLightningModule, RewardNetTrainer, RewardNetworkTrainerParameters
  from reagent.workflow.identify_types_flow import identify_normalization_parameters
  from reagent.workflow.types import Dataset, PreprocessingOptions, ReaderOptions, ResourceOptions, RewardOptions, TableSpec
label_desc: Use image node_id 2 for calling the SyntheticRewardDataModule obj's underlying member method code with example usage: obj.run_feature_identification(input_table_spec) and returns: dict, dict