Source code for src.update_conversionlts


import numpy as np
import pandas as pd

[docs] def conversionlts(blocks_per_day, chronological_timeslices, timeslices, chronological_sequence, representative_days, output_file): # 3 VECTOR CREATION # # Tile: [1, 2,..., timeslice, 1, 2, ..., timeslice ... ] repeated (Chronological timeslice) times timeslice_vector = np.tile(np.arange(1, timeslices + 1), chronological_timeslices) # A sequência CHRONOLOGICAL_TIME contém strings como 'D1HB1', 'D1HB2', ..., repetidas para o total de timeslices. Esse formato da pau no otoole. #chronological_time = np.repeat([f"D{day:03d}HB{block:02d}" for day in range(1, days_in_year + 1) # for block in range(1, blocks_per_day + 1)], timeslices) # Repeat: [1, 1, 1, 1, ... (timeslice) times, 2, 2, 2, 2, ... (timeslice) times, ... (Chronological timeslices), (Chronological timeslices), ... (timeslice) times] chronological_time_vector = np.repeat(np.arange(1, chronological_timeslices + 1), timeslices) # Vector (days_in_year * blocks_per_day * timeslices) with zeros values_vector = np.zeros(chronological_timeslices * timeslices, dtype=int) # Loops # # Mapeia cada dia em chronological_sequence para o seu correspondente bloco de timeslices for day_idx, rep_day in enumerate(chronological_sequence): # O índice em representative_days determina o bloco de timeslices timeslice_block_start = representative_days.index(rep_day) * blocks_per_day # Define '1' nos timeslices correspondentes para o dia específico em chronological_time for block in range(blocks_per_day): timeslice_number = timeslice_block_start + block index = (day_idx * blocks_per_day + block) * timeslices + timeslice_number values_vector[index] = 1 # Marca com '1' a posição correta # Cria o DataFrame com as colunas corretas df = pd.DataFrame({ 'TIMESLICE': timeslice_vector, 'TIMESLICECRO': chronological_time_vector, 'VALUE': values_vector }) # Ordena o DataFrame baseado na coluna TIMESLICE_NUMBER e reordena o índice df = df.sort_values(by=['TIMESLICE', 'TIMESLICECRO']).reset_index(drop=True) # Save to CSV df.to_csv(output_file, index=False) return output_file