inewave 1.10.2__py3-none-any.whl → 1.10.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- inewave/__init__.py +1 -1
- inewave/_utils/formatacao.py +23 -9
- inewave/newave/modelos/ghmin.py +20 -9
- inewave/newave/modelos/newavetim.py +3 -1
- inewave/newave/modelos/sistema.py +2 -2
- inewave/nwlistop/modelos/mediasusih.py +1 -2
- {inewave-1.10.2.dist-info → inewave-1.10.4.dist-info}/METADATA +1 -1
- {inewave-1.10.2.dist-info → inewave-1.10.4.dist-info}/RECORD +10 -10
- {inewave-1.10.2.dist-info → inewave-1.10.4.dist-info}/WHEEL +0 -0
- {inewave-1.10.2.dist-info → inewave-1.10.4.dist-info}/licenses/LICENSE.md +0 -0
inewave/__init__.py
CHANGED
inewave/_utils/formatacao.py
CHANGED
|
@@ -166,20 +166,34 @@ def formata_df_meses_para_datas_nwlistop(df: pd.DataFrame) -> pd.DataFrame:
|
|
|
166
166
|
}
|
|
167
167
|
return mapa_formatacao[colunas_identificacao](df)
|
|
168
168
|
|
|
169
|
+
def converte_anos(anos: List[str]) -> List[int]:
|
|
170
|
+
"""
|
|
171
|
+
Converte uma lista de anos representados como strings para inteiros.
|
|
172
|
+
Se o ano for 'PRE', converte para 1; se for 'POS', converte para 9999.
|
|
173
|
+
"""
|
|
174
|
+
anos_convertidos = []
|
|
175
|
+
for a in anos:
|
|
176
|
+
if a == "PRE":
|
|
177
|
+
anos_convertidos.append(1)
|
|
178
|
+
elif a == "POS":
|
|
179
|
+
anos_convertidos.append(9999)
|
|
180
|
+
else:
|
|
181
|
+
anos_convertidos.append(int(a))
|
|
182
|
+
return anos_convertidos
|
|
183
|
+
|
|
184
|
+
def prepara_vetor_ano_mes_tabela(anos: List[str], meses: List[int]) -> List[datetime]:
|
|
185
|
+
|
|
186
|
+
anos_convertidos = converte_anos(anos)
|
|
187
|
+
return [
|
|
188
|
+
datetime(year=int(a), month=int(m), day=1) for a, m in zip(anos_convertidos, meses)
|
|
189
|
+
]
|
|
190
|
+
|
|
169
191
|
|
|
170
192
|
def prepara_vetor_anos_tabela(anos: List[str]) -> List[datetime]:
|
|
171
193
|
# Se tem pré, substitui por 0001
|
|
172
194
|
# Se tem pós, substitui por 9999
|
|
173
195
|
# Repete os valores existentes 12 vezes
|
|
174
|
-
anos_convertidos
|
|
175
|
-
for a in anos:
|
|
176
|
-
if a == "PRE":
|
|
177
|
-
a_convertido = 1
|
|
178
|
-
elif a == "POS":
|
|
179
|
-
a_convertido = 9999
|
|
180
|
-
else:
|
|
181
|
-
a_convertido = int(a)
|
|
182
|
-
anos_convertidos.append(a_convertido)
|
|
196
|
+
anos_convertidos = converte_anos(anos)
|
|
183
197
|
|
|
184
198
|
anos_array = np.array(anos_convertidos).repeat(len(MESES_DF))
|
|
185
199
|
meses = np.tile(np.arange(1, 13), len(anos))
|
inewave/newave/modelos/ghmin.py
CHANGED
|
@@ -2,10 +2,14 @@ from cfinterface.components.section import Section
|
|
|
2
2
|
from cfinterface.components.line import Line
|
|
3
3
|
from cfinterface.components.integerfield import IntegerField
|
|
4
4
|
from cfinterface.components.floatfield import FloatField
|
|
5
|
-
from cfinterface.components.
|
|
5
|
+
from cfinterface.components.literalfield import LiteralField
|
|
6
6
|
from typing import List, IO, Optional
|
|
7
7
|
import pandas as pd # type: ignore
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
from inewave._utils.formatacao import (
|
|
10
|
+
prepara_valor_ano,
|
|
11
|
+
prepara_vetor_ano_mes_tabela,
|
|
12
|
+
)
|
|
9
13
|
|
|
10
14
|
|
|
11
15
|
class BlocoUHEGhmin(Section):
|
|
@@ -22,7 +26,8 @@ class BlocoUHEGhmin(Section):
|
|
|
22
26
|
self.__linha_uhe = Line(
|
|
23
27
|
[
|
|
24
28
|
IntegerField(3, 0),
|
|
25
|
-
|
|
29
|
+
LiteralField(2, 5),
|
|
30
|
+
LiteralField(4, 8),
|
|
26
31
|
IntegerField(1, 14),
|
|
27
32
|
FloatField(6, 17, 0),
|
|
28
33
|
]
|
|
@@ -48,7 +53,7 @@ class BlocoUHEGhmin(Section):
|
|
|
48
53
|
def converte_tabela_em_df():
|
|
49
54
|
df = pd.DataFrame()
|
|
50
55
|
df["codigo_usina"] = codigos
|
|
51
|
-
df["data"] =
|
|
56
|
+
df["data"] = prepara_vetor_ano_mes_tabela(anos, meses)
|
|
52
57
|
df["patamar"] = patamares
|
|
53
58
|
df["geracao"] = geracoes
|
|
54
59
|
return df
|
|
@@ -59,7 +64,8 @@ class BlocoUHEGhmin(Section):
|
|
|
59
64
|
|
|
60
65
|
# Variáveis auxiliares
|
|
61
66
|
codigos: List[Optional[int]] = []
|
|
62
|
-
|
|
67
|
+
meses: List[Optional[str]] = []
|
|
68
|
+
anos: List[Optional[str]] = []
|
|
63
69
|
patamares: List[Optional[int]] = []
|
|
64
70
|
geracoes: List[Optional[float]] = []
|
|
65
71
|
|
|
@@ -72,9 +78,10 @@ class BlocoUHEGhmin(Section):
|
|
|
72
78
|
break
|
|
73
79
|
dados = self.__linha_uhe.read(linha)
|
|
74
80
|
codigos.append(dados[0])
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
81
|
+
meses.append(dados[1])
|
|
82
|
+
anos.append(dados[2])
|
|
83
|
+
patamares.append(dados[3])
|
|
84
|
+
geracoes.append(dados[4])
|
|
78
85
|
|
|
79
86
|
# Override
|
|
80
87
|
def write(self, file: IO, *args, **kwargs):
|
|
@@ -82,8 +89,12 @@ class BlocoUHEGhmin(Section):
|
|
|
82
89
|
file.write(linha)
|
|
83
90
|
if not isinstance(self.data, pd.DataFrame):
|
|
84
91
|
raise ValueError("Dados do ghmin.dat não foram lidos com sucesso")
|
|
92
|
+
df_aux = self.data.copy()
|
|
93
|
+
df_aux['ano'] = df_aux['data'].apply(lambda x: prepara_valor_ano(x.year))
|
|
94
|
+
df_aux['mes'] = df_aux['data'].apply(lambda x: f"{x.month:2d}")
|
|
95
|
+
df_aux.drop("data", inplace=True, axis=1)
|
|
85
96
|
|
|
86
|
-
for _, linha in
|
|
97
|
+
for _, linha in df_aux[['codigo_usina','mes','ano','patamar','geracao']].iterrows():
|
|
87
98
|
linha_lida: pd.Series = linha
|
|
88
99
|
dados_linha = linha_lida.tolist()
|
|
89
100
|
file.write(self.__linha_uhe.write(dados_linha))
|
|
@@ -51,8 +51,10 @@ class BlocoTemposEtapasTim(Block):
|
|
|
51
51
|
tempos: List[timedelta] = []
|
|
52
52
|
|
|
53
53
|
# Leitura das etapas
|
|
54
|
-
|
|
54
|
+
while True:
|
|
55
55
|
dados = self.__line.read(file.readline())
|
|
56
|
+
if not dados or not dados[0].strip("- \t\n"):
|
|
57
|
+
break
|
|
56
58
|
etapas.append(dados[0].split(":")[0])
|
|
57
59
|
h = int(dados[1].split("h")[0])
|
|
58
60
|
min = int(dados[1].split("h")[1].split("min")[0])
|
|
@@ -285,7 +285,7 @@ class BlocoIntercambioSubsistema(Section):
|
|
|
285
285
|
self.data = converte_tabela_em_df()
|
|
286
286
|
break
|
|
287
287
|
# Confere se é uma linha de subsistema ou tabela
|
|
288
|
-
if len(linha) < 30:
|
|
288
|
+
if len(linha.strip()) < 30:
|
|
289
289
|
dados = self.__linha_subsis.read(linha)
|
|
290
290
|
subsis_de_atual = (
|
|
291
291
|
subsis_de_atual if dados[0] is None else dados[0]
|
|
@@ -575,7 +575,7 @@ class BlocoGeracaoUsinasNaoSimuladas(Section):
|
|
|
575
575
|
self.data = converte_tabela_em_df()
|
|
576
576
|
break
|
|
577
577
|
# Confere se é uma linha de subsistema ou tabela
|
|
578
|
-
if len(linha) < 30:
|
|
578
|
+
if len(linha.strip()) < 30:
|
|
579
579
|
dados = self.__linha_subsis.read(linha)
|
|
580
580
|
subsis_atual = dados[0]
|
|
581
581
|
bloco_atual = dados[1]
|
|
@@ -44,8 +44,7 @@ class TabelaMediasusih(Section):
|
|
|
44
44
|
var_name="estagio",
|
|
45
45
|
value_name="valor",
|
|
46
46
|
)
|
|
47
|
-
df
|
|
48
|
-
df = df.astype({"valor": float})
|
|
47
|
+
df["valor"] = pd.to_numeric(df["valor"], errors="coerce")
|
|
49
48
|
df["estagio"] = df["estagio"].astype(int)
|
|
50
49
|
df["estagio"] -= df["estagio"].min() - 1
|
|
51
50
|
df = df.pivot_table(
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
inewave/__init__.py,sha256=
|
|
1
|
+
inewave/__init__.py,sha256=4vDxRppIcVG0MZ_cacv6ciAvU2OoLZDCLVF5gPVlI6c,236
|
|
2
2
|
inewave/config.py,sha256=fMgG2sqE_PNz30QCNxkgfPf78SEOAVfV07kGtO1bREE,1106
|
|
3
3
|
inewave/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
4
|
inewave/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
-
inewave/_utils/formatacao.py,sha256
|
|
5
|
+
inewave/_utils/formatacao.py,sha256=v7Qo6wb_q43IsLn6YHIKup_-0Q-TSEIvwHsMFWvkFI8,6431
|
|
6
6
|
inewave/libs/__init__.py,sha256=Jz0qQ08srjYGvoynfro6m8fQYAKbnkj-VweNEu8JnVQ,161
|
|
7
7
|
inewave/libs/eolica.py,sha256=YMO1_37PojeUeix-CtkYeba2z66aRkaRR6CE_Cn4sbs,13324
|
|
8
8
|
inewave/libs/restricoes.py,sha256=9CkYGsg6fWSFS7RoyIqKlqxfaCwcNxFJrUS8Qknz4xg,16485
|
|
@@ -122,13 +122,13 @@ inewave/newave/modelos/expt.py,sha256=TgfHkVhZUbBcvRgctjxHgRHqcm_57BecXY5wKb1ZrX
|
|
|
122
122
|
inewave/newave/modelos/forward.py,sha256=f3YDCMcl45DOYVa41XtI3A9Ko9pPmeI-_epu5ov3m4o,88425
|
|
123
123
|
inewave/newave/modelos/forwarh.py,sha256=46jHcPDTBftWm8Q23zzJwiXIoSnxAuQLMBzkA4BQq6s,8231
|
|
124
124
|
inewave/newave/modelos/gee.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
125
|
-
inewave/newave/modelos/ghmin.py,sha256=
|
|
125
|
+
inewave/newave/modelos/ghmin.py,sha256=RKkZBTGjh8ovcxVhYnvVXvcxYFsqNHIO4C8YOpCyJPI,3438
|
|
126
126
|
inewave/newave/modelos/gtminpat.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
127
127
|
inewave/newave/modelos/hidr.py,sha256=ga3luPn4E7GDY5dl9UrnbIt2DUU1m1cs4EognfLsg2c,15773
|
|
128
128
|
inewave/newave/modelos/itaipu.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
129
129
|
inewave/newave/modelos/manutt.py,sha256=16sztv-hOdVUUeL2J5F9vBagZnII9-F-IGQJpiAkTK4,3781
|
|
130
130
|
inewave/newave/modelos/modif.py,sha256=uXNRcO03dwqCeoJ1kBSNWAiaYJLLqIDThAeqsym20Uo,17159
|
|
131
|
-
inewave/newave/modelos/newavetim.py,sha256=
|
|
131
|
+
inewave/newave/modelos/newavetim.py,sha256=5oCqu2rL0A3sok2k8NoqaHhhEPFWz1_DXWYxoG9VFe0,3052
|
|
132
132
|
inewave/newave/modelos/nwv_avl_evap.py,sha256=22oXfDH9R-I1HwAiaQgm7x21zDWGWVySWYsLfdvGlHg,1228
|
|
133
133
|
inewave/newave/modelos/nwv_cortes_evap.py,sha256=nAgdZ-TdWPmokcG1qANgoKtfwyq3waIFclKcY7WyWtQ,1292
|
|
134
134
|
inewave/newave/modelos/nwv_eco_evap.py,sha256=vog9Lw4cqxx66Gmqext086cEsL-Tz5_4pG6wJFSoO90,1235
|
|
@@ -144,7 +144,7 @@ inewave/newave/modelos/ree.py,sha256=6VaJhSKutVlaPtQDTZcf1S7JHR0hNhEsPgsh_MzyegA
|
|
|
144
144
|
inewave/newave/modelos/sar.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
145
145
|
inewave/newave/modelos/selcor.py,sha256=v2ASlI61CKebh5eCOeA5Ce3GLzFDAYJ9Bsm0whKqq-4,2069
|
|
146
146
|
inewave/newave/modelos/shist.py,sha256=wy_E1onlbfrCFvWcpNhnUt3WAGmPJ2FSUbkywvH1b2c,3376
|
|
147
|
-
inewave/newave/modelos/sistema.py,sha256=
|
|
147
|
+
inewave/newave/modelos/sistema.py,sha256=5DCUta3ef69SHD6AdwVFW3bYU-i7doVNQl1v5XEUyUk,23107
|
|
148
148
|
inewave/newave/modelos/tecno.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
149
149
|
inewave/newave/modelos/term.py,sha256=cL5356rYRHPf1zsXzoGzrPa1MtncMAOhwP-U27s2o8E,4760
|
|
150
150
|
inewave/newave/modelos/vazaob.py,sha256=_G5Kd1PD7C5DU2aV_Xam67GpaqJTEvXCWuhiAO_POyw,2901
|
|
@@ -444,7 +444,7 @@ inewave/nwlistop/modelos/mediasrhq.py,sha256=hv9jZHw8wL3p-YL1fY-oym2EO5N4ooPbADD
|
|
|
444
444
|
inewave/nwlistop/modelos/mediasrhv.py,sha256=38fFijM3Fdr_3GRaq5bESFsFCbgJCuq22EBxz-Htaz4,1736
|
|
445
445
|
inewave/nwlistop/modelos/mediassin.py,sha256=R798woqZQ4p93Jpmt1ji2vNms1UEhkAkAFqv2b-lwUE,1635
|
|
446
446
|
inewave/nwlistop/modelos/mediasusie.py,sha256=_j5osR1diNnwkqxy1wHcnTVW_T0YDHa4YAS8KwBvivw,1725
|
|
447
|
-
inewave/nwlistop/modelos/mediasusih.py,sha256=
|
|
447
|
+
inewave/nwlistop/modelos/mediasusih.py,sha256=K8dwMu8VVRUtgc_UDcEFavQHynPqhV1DgdEp8lyDBPM,1791
|
|
448
448
|
inewave/nwlistop/modelos/mediasusit.py,sha256=87xjpsy7XS8O40hpDubbsPn-MXKRn2NVXG5k3iYJrzA,1725
|
|
449
449
|
inewave/nwlistop/modelos/mercl.py,sha256=arrMiDrPb3z7CqoT0ndCW0GZgJec6oa0by3yfd9GWWQ,634
|
|
450
450
|
inewave/nwlistop/modelos/merclsin.py,sha256=arrMiDrPb3z7CqoT0ndCW0GZgJec6oa0by3yfd9GWWQ,634
|
|
@@ -539,7 +539,7 @@ inewave/nwlistop/modelos/blocos/usina.py,sha256=cQvLVtG1NC8y4lP_to6-YjAKQRGRlaxO
|
|
|
539
539
|
inewave/nwlistop/modelos/blocos/valoresclassetermicaseriepatamar.py,sha256=0LV0JMFoiuNEQ3n-XVfG2T0sIq_33bnCt6gmwPOTql8,3283
|
|
540
540
|
inewave/nwlistop/modelos/blocos/valoresserie.py,sha256=Q88QBoI3zyU7y0AvHBeSqDBEVAkb3rAa3XpxA51NbF8,2143
|
|
541
541
|
inewave/nwlistop/modelos/blocos/valoresseriepatamar.py,sha256=xnRdor-_2VyR5EbWNSzU_hbABJFtfgKGlznbcRaslGg,2589
|
|
542
|
-
inewave-1.10.
|
|
543
|
-
inewave-1.10.
|
|
544
|
-
inewave-1.10.
|
|
545
|
-
inewave-1.10.
|
|
542
|
+
inewave-1.10.4.dist-info/METADATA,sha256=hK208dE9CHEbTHkX7bZdlCAuIKFR527ceI7UlhF0hjg,3743
|
|
543
|
+
inewave-1.10.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
544
|
+
inewave-1.10.4.dist-info/licenses/LICENSE.md,sha256=0jOBL78mjzscN0-XI-6YtK1IqnODUbG85DaKAMH4XJ8,1070
|
|
545
|
+
inewave-1.10.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|