from EmotionRecognition.utils.common import read_yaml, create_directories from EmotionRecognition.entity.config_entity import ( DataPreparationConfig, DataPreprocessingConfig, ModelTrainerConfig, ModelEvaluationConfig ) from pathlib import Path class ConfigurationManager: def __init__( self, config_filepath = Path("config/config.yaml"), params_filepath = Path("params.yaml")): self.config = read_yaml(config_filepath) self.params = read_yaml(params_filepath) create_directories([self.config.artifacts_root]) def get_data_preparation_config(self) -> DataPreparationConfig: prep_config = self.config.data_preparation # Note: Raw data paths are now defined in data_preparation, not a separate ingestion config create_directories([prep_config.root_dir]) return DataPreparationConfig( root_dir=Path(prep_config.root_dir), ferplus_pixels_csv=Path(prep_config.ferplus_pixels_csv), ferplus_labels_csv=Path(prep_config.ferplus_labels_csv), ckplus_dir=Path(prep_config.ckplus_dir), combined_train_dir=Path(prep_config.combined_train_dir), ferplus_test_dir=Path(prep_config.ferplus_test_dir) ) def get_data_preprocessing_config(self) -> DataPreprocessingConfig: preprocess_config = self.config.data_preprocessing create_directories([preprocess_config.root_dir]) return DataPreprocessingConfig( root_dir=Path(preprocess_config.root_dir), source_train_dir=Path(preprocess_config.source_train_dir), source_test_dir=Path(preprocess_config.source_test_dir), balanced_train_dir=Path(preprocess_config.balanced_train_dir), balanced_test_dir=Path(preprocess_config.balanced_test_dir), target_samples_per_class=preprocess_config.target_samples_per_class ) def get_model_trainer_config(self) -> ModelTrainerConfig: config = self.config.model_trainer create_directories([config.root_dir]) return ModelTrainerConfig( root_dir=Path(config.root_dir), train_data_dir=Path(config.train_data_dir), test_data_dir=Path(config.test_data_dir), trained_model_path=Path(config.trained_model_path) ) def get_model_evaluation_config(self) -> ModelEvaluationConfig: config = self.config.model_evaluation create_directories([config.root_dir]) return ModelEvaluationConfig( root_dir=Path(config.root_dir), test_data_dir=Path(config.test_data_dir), # Corrected from data_dir trained_model_path=Path(config.trained_model_path), metrics_file_name=Path(config.metrics_file_name), mlflow_uri=config.mlflow_uri )