File size: 2,847 Bytes
f8f5549
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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
        )