def index_memory_data()

in analysis/GreenSKU-Framework/src/carbon_model.py [0:0]


def index_memory_data(memory_type: str, memory_frequency: Union[int, str],  memory_size: int,
                      data_source: str="data_sources") -> Dict[str, Any]:
    """Index the memory data for a given memory type, frequency, and size.

    Args:
        memory_type: The memory type.
        memory_frequency: The memory frequency.
        memory_size: The memory size.
        data_source: The directory containing the memory data.

    Returns:
        A dictionary containing the memory data.
    """
    memory_data = read_yaml(join_path(data_source, 'DRAM.yaml'))
    if isinstance(memory_frequency, int):
        memory_frequency = str(memory_frequency)
        memory_frequency = memory_frequency + 'MHz'
    data = None
    if memory_type in memory_data:
        memory_type_data = memory_data[memory_type]
        for freq_item in memory_type_data['frequencies']:
            if freq_item['frequency'] != memory_frequency:
                continue
            sizes = freq_item['sizes']
            for size_item in sizes:
                if size_item['size'] != memory_size:
                    continue
                data = size_item
                data['spec_derates'] = memory_type_data['spec_derates']
                if 'carbon' not in data:
                    data['carbon'] = 0.0
                return data
    raise ValueError(f'Memory data not found for {memory_type} {memory_frequency} {memory_size}')