inewave 1.6.0__py3-none-any.whl → 1.7.1__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/newave/__init__.py +10 -0
- inewave/newave/modelos/pmo.py +243 -3
- inewave/newave/modelos/vazinat.py +92 -0
- inewave/newave/pmo.py +82 -1
- inewave/newave/sistema.py +2 -2
- inewave/newave/vazinat.py +43 -0
- inewave/nwlistop/__init__.py +8 -1
- inewave/nwlistop/mediasmerc.py +20 -21
- inewave/nwlistop/mediasree.py +37 -0
- inewave/nwlistop/mediasrep.py +38 -0
- inewave/nwlistop/mediasrhq.py +38 -0
- inewave/nwlistop/mediasrhv.py +38 -0
- inewave/nwlistop/mediassin.py +19 -21
- inewave/nwlistop/mediasusie.py +38 -0
- inewave/nwlistop/mediasusih.py +37 -0
- inewave/nwlistop/mediasusit.py +37 -0
- inewave/nwlistop/modelos/mediasmerc.py +46 -34
- inewave/nwlistop/modelos/mediasree.py +52 -0
- inewave/nwlistop/modelos/mediasrep.py +52 -0
- inewave/nwlistop/modelos/mediasrhq.py +52 -0
- inewave/nwlistop/modelos/mediasrhv.py +52 -0
- inewave/nwlistop/modelos/mediassin.py +45 -29
- inewave/nwlistop/modelos/mediasusie.py +52 -0
- inewave/nwlistop/modelos/mediasusih.py +54 -0
- inewave/nwlistop/modelos/mediasusit.py +52 -0
- {inewave-1.6.0.dist-info → inewave-1.7.1.dist-info}/METADATA +1 -1
- {inewave-1.6.0.dist-info → inewave-1.7.1.dist-info}/RECORD +43 -20
- tests/mocks/arquivos/pmo.py +1741 -149
- tests/newave/test_pmo.py +59 -0
- tests/newave/test_vazinat.py +66 -0
- tests/nwlistop/test_mediasmerc.py +4 -8
- tests/nwlistop/test_mediasree.py +12 -0
- tests/nwlistop/test_mediasrep.py +12 -0
- tests/nwlistop/test_mediasrhq.py +12 -0
- tests/nwlistop/test_mediasrhv.py +11 -0
- tests/nwlistop/test_mediassin.py +4 -9
- tests/nwlistop/test_mediasusie.py +12 -0
- tests/nwlistop/test_mediasusih.py +11 -0
- tests/nwlistop/test_mediasusit.py +12 -0
- inewave/_utils/leituracsv.py +0 -57
- {inewave-1.6.0.dist-info → inewave-1.7.1.dist-info}/LICENSE.md +0 -0
- {inewave-1.6.0.dist-info → inewave-1.7.1.dist-info}/WHEEL +0 -0
- {inewave-1.6.0.dist-info → inewave-1.7.1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import pandas as pd # type: ignore
|
|
2
|
+
|
|
3
|
+
from cfinterface.files.sectionfile import SectionFile
|
|
4
|
+
|
|
5
|
+
from inewave.nwlistop.modelos.mediasrep import TabelaMediasrep
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Mediasrep(SectionFile):
|
|
9
|
+
"""
|
|
10
|
+
Armazena os dados das saídas referentes às médias
|
|
11
|
+
das restrições elétricas especiais.
|
|
12
|
+
|
|
13
|
+
Esta classe lida com as informações de saída fornecidas pelo
|
|
14
|
+
NWLISTOP e reproduzidas nos `MEDIAS-REP.CSV`.
|
|
15
|
+
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
SECTIONS = [TabelaMediasrep]
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def valores(self) -> pd.DataFrame:
|
|
22
|
+
"""
|
|
23
|
+
Tabela com os valores de médias para as variáveis das
|
|
24
|
+
restrições elétricas especiais.
|
|
25
|
+
|
|
26
|
+
- estagio (`int`)
|
|
27
|
+
- codigo_restricao (`int`)
|
|
28
|
+
- <variavel_1> (`float`)
|
|
29
|
+
- ...
|
|
30
|
+
- <variavel_n> (`float`)
|
|
31
|
+
|
|
32
|
+
:return: A tabela como um DataFrame
|
|
33
|
+
:rtype: pd.DataFrame | None
|
|
34
|
+
"""
|
|
35
|
+
b = self.data.get_sections_of_type(TabelaMediasrep)
|
|
36
|
+
if isinstance(b, TabelaMediasrep):
|
|
37
|
+
return b.data
|
|
38
|
+
return None
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import pandas as pd # type: ignore
|
|
2
|
+
|
|
3
|
+
from cfinterface.files.sectionfile import SectionFile
|
|
4
|
+
|
|
5
|
+
from inewave.nwlistop.modelos.mediasrhq import TabelaMediasrhq
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Mediasrhq(SectionFile):
|
|
9
|
+
"""
|
|
10
|
+
Armazena os dados das saídas referentes às médias
|
|
11
|
+
das restrições hidráulicas de vazão.
|
|
12
|
+
|
|
13
|
+
Esta classe lida com as informações de saída fornecidas pelo
|
|
14
|
+
NWLISTOP e reproduzidas nos `MEDIAS-RHQ.CSV`.
|
|
15
|
+
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
SECTIONS = [TabelaMediasrhq]
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def valores(self) -> pd.DataFrame:
|
|
22
|
+
"""
|
|
23
|
+
Tabela com os valores de médias para as variáveis das
|
|
24
|
+
restrições hidráulicas de vazão.
|
|
25
|
+
|
|
26
|
+
- estagio (`int`)
|
|
27
|
+
- codigo_restricao (`int`)
|
|
28
|
+
- <variavel_1> (`float`)
|
|
29
|
+
- ...
|
|
30
|
+
- <variavel_n> (`float`)
|
|
31
|
+
|
|
32
|
+
:return: A tabela como um DataFrame
|
|
33
|
+
:rtype: pd.DataFrame | None
|
|
34
|
+
"""
|
|
35
|
+
b = self.data.get_sections_of_type(TabelaMediasrhq)
|
|
36
|
+
if isinstance(b, TabelaMediasrhq):
|
|
37
|
+
return b.data
|
|
38
|
+
return None
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import pandas as pd # type: ignore
|
|
2
|
+
|
|
3
|
+
from cfinterface.files.sectionfile import SectionFile
|
|
4
|
+
|
|
5
|
+
from inewave.nwlistop.modelos.mediasrhv import TabelaMediasrhv
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Mediasrhv(SectionFile):
|
|
9
|
+
"""
|
|
10
|
+
Armazena os dados das saídas referentes às médias
|
|
11
|
+
das restrições hidráulicas de volume.
|
|
12
|
+
|
|
13
|
+
Esta classe lida com as informações de saída fornecidas pelo
|
|
14
|
+
NWLISTOP e reproduzidas nos `MEDIAS-RHV.CSV`.
|
|
15
|
+
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
SECTIONS = [TabelaMediasrhv]
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def valores(self) -> pd.DataFrame:
|
|
22
|
+
"""
|
|
23
|
+
Tabela com os valores de médias para as variáveis das
|
|
24
|
+
restrições hidráulicas de volume.
|
|
25
|
+
|
|
26
|
+
- estagio (`int`)
|
|
27
|
+
- codigo_restricao (`int`)
|
|
28
|
+
- <variavel_1> (`float`)
|
|
29
|
+
- ...
|
|
30
|
+
- <variavel_n> (`float`)
|
|
31
|
+
|
|
32
|
+
:return: A tabela como um DataFrame
|
|
33
|
+
:rtype: pd.DataFrame | None
|
|
34
|
+
"""
|
|
35
|
+
b = self.data.get_sections_of_type(TabelaMediasrhv)
|
|
36
|
+
if isinstance(b, TabelaMediasrhv):
|
|
37
|
+
return b.data
|
|
38
|
+
return None
|
inewave/nwlistop/mediassin.py
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import pandas as pd # type: ignore
|
|
2
2
|
|
|
3
|
-
from
|
|
3
|
+
from cfinterface.files.sectionfile import SectionFile
|
|
4
4
|
|
|
5
|
+
from inewave.nwlistop.modelos.mediassin import TabelaMediassin
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
|
|
8
|
+
class Mediassin(SectionFile):
|
|
7
9
|
"""
|
|
8
10
|
Armazena os dados das saídas referentes às médias de diversas variáveis
|
|
9
11
|
para o SIN.
|
|
@@ -13,26 +15,22 @@ class Mediassin:
|
|
|
13
15
|
|
|
14
16
|
"""
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
self.__dados = dados
|
|
18
|
-
|
|
19
|
-
def __eq__(self, o: object) -> bool:
|
|
20
|
-
"""
|
|
21
|
-
A igualdade entre Mediassin avalia todos os valores da tabela.
|
|
22
|
-
"""
|
|
23
|
-
if not isinstance(o, Mediassin):
|
|
24
|
-
return False
|
|
25
|
-
m: Mediassin = o
|
|
26
|
-
return self.medias.equals(m.medias)
|
|
18
|
+
SECTIONS = [TabelaMediassin]
|
|
27
19
|
|
|
28
20
|
@property
|
|
29
|
-
def
|
|
30
|
-
|
|
21
|
+
def valores(self) -> pd.DataFrame:
|
|
22
|
+
"""
|
|
23
|
+
Tabela com os valores de médias para as variáveis do SIN.
|
|
31
24
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
25
|
+
- estagio (`int`)
|
|
26
|
+
- <variavel_1> (`float`)
|
|
27
|
+
- ...
|
|
28
|
+
- <variavel_n> (`float`)
|
|
35
29
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
:return: A tabela como um DataFrame
|
|
31
|
+
:rtype: pd.DataFrame | None
|
|
32
|
+
"""
|
|
33
|
+
b = self.data.get_sections_of_type(TabelaMediassin)
|
|
34
|
+
if isinstance(b, TabelaMediassin):
|
|
35
|
+
return b.data
|
|
36
|
+
return None
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import pandas as pd # type: ignore
|
|
2
|
+
|
|
3
|
+
from cfinterface.files.sectionfile import SectionFile
|
|
4
|
+
|
|
5
|
+
from inewave.nwlistop.modelos.mediasusie import TabelaMediasusie
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Mediasusie(SectionFile):
|
|
9
|
+
"""
|
|
10
|
+
Armazena os dados das saídas referentes às médias de diversas variáveis
|
|
11
|
+
de cada estação elevatória.
|
|
12
|
+
|
|
13
|
+
Esta classe lida com as informações de saída fornecidas pelo
|
|
14
|
+
NWLISTOP e reproduzidas nos `MEDIAS-USIE.CSV`.
|
|
15
|
+
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
SECTIONS = [TabelaMediasusie]
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def valores(self) -> pd.DataFrame:
|
|
22
|
+
"""
|
|
23
|
+
Tabela com os valores de médias para as variáveis das estações
|
|
24
|
+
elevatórias.
|
|
25
|
+
|
|
26
|
+
- estagio (`int`)
|
|
27
|
+
- codigo_usina (`int`)
|
|
28
|
+
- <variavel_1> (`float`)
|
|
29
|
+
- ...
|
|
30
|
+
- <variavel_n> (`float`)
|
|
31
|
+
|
|
32
|
+
:return: A tabela como um DataFrame
|
|
33
|
+
:rtype: pd.DataFrame | None
|
|
34
|
+
"""
|
|
35
|
+
b = self.data.get_sections_of_type(TabelaMediasusie)
|
|
36
|
+
if isinstance(b, TabelaMediasusie):
|
|
37
|
+
return b.data
|
|
38
|
+
return None
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import pandas as pd # type: ignore
|
|
2
|
+
|
|
3
|
+
from cfinterface.files.sectionfile import SectionFile
|
|
4
|
+
|
|
5
|
+
from inewave.nwlistop.modelos.mediasusih import TabelaMediasusih
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Mediasusih(SectionFile):
|
|
9
|
+
"""
|
|
10
|
+
Armazena os dados das saídas referentes às médias de diversas variáveis
|
|
11
|
+
de cada UHE.
|
|
12
|
+
|
|
13
|
+
Esta classe lida com as informações de saída fornecidas pelo
|
|
14
|
+
NWLISTOP e reproduzidas nos `MEDIAS-USIH.CSV`.
|
|
15
|
+
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
SECTIONS = [TabelaMediasusih]
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def valores(self) -> pd.DataFrame:
|
|
22
|
+
"""
|
|
23
|
+
Tabela com os valores de médias para as variáveis das UHE.
|
|
24
|
+
|
|
25
|
+
- estagio (`int`)
|
|
26
|
+
- codigo_usina (`int`)
|
|
27
|
+
- <variavel_1> (`float`)
|
|
28
|
+
- ...
|
|
29
|
+
- <variavel_n> (`float`)
|
|
30
|
+
|
|
31
|
+
:return: A tabela como um DataFrame
|
|
32
|
+
:rtype: pd.DataFrame | None
|
|
33
|
+
"""
|
|
34
|
+
b = self.data.get_sections_of_type(TabelaMediasusih)
|
|
35
|
+
if isinstance(b, TabelaMediasusih):
|
|
36
|
+
return b.data
|
|
37
|
+
return None
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import pandas as pd # type: ignore
|
|
2
|
+
|
|
3
|
+
from cfinterface.files.sectionfile import SectionFile
|
|
4
|
+
|
|
5
|
+
from inewave.nwlistop.modelos.mediasusit import TabelaMediasusit
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Mediasusit(SectionFile):
|
|
9
|
+
"""
|
|
10
|
+
Armazena os dados das saídas referentes às médias de diversas variáveis
|
|
11
|
+
de cada UTE.
|
|
12
|
+
|
|
13
|
+
Esta classe lida com as informações de saída fornecidas pelo
|
|
14
|
+
NWLISTOP e reproduzidas nos `MEDIAS-USIT.CSV`.
|
|
15
|
+
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
SECTIONS = [TabelaMediasusit]
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def valores(self) -> pd.DataFrame:
|
|
22
|
+
"""
|
|
23
|
+
Tabela com os valores de médias para as variáveis das UHE.
|
|
24
|
+
|
|
25
|
+
- estagio (`int`)
|
|
26
|
+
- codigo_usina (`int`)
|
|
27
|
+
- <variavel_1> (`float`)
|
|
28
|
+
- ...
|
|
29
|
+
- <variavel_n> (`float`)
|
|
30
|
+
|
|
31
|
+
:return: A tabela como um DataFrame
|
|
32
|
+
:rtype: pd.DataFrame | None
|
|
33
|
+
"""
|
|
34
|
+
b = self.data.get_sections_of_type(TabelaMediasusit)
|
|
35
|
+
if isinstance(b, TabelaMediasusit):
|
|
36
|
+
return b.data
|
|
37
|
+
return None
|
|
@@ -1,40 +1,52 @@
|
|
|
1
|
-
# Imports do próprio módulo
|
|
2
|
-
from inewave._utils.leituracsv import LeituraCSV
|
|
3
|
-
|
|
4
1
|
# Imports de módulos externos
|
|
2
|
+
from cfinterface.components.section import Section
|
|
3
|
+
from typing import IO
|
|
4
|
+
import pandas as pd # type: ignore
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
class
|
|
7
|
+
class TabelaMediasmerc(Section):
|
|
8
8
|
"""
|
|
9
|
-
|
|
10
|
-
existente em um diretório de saídas do NEWAVE.
|
|
11
|
-
|
|
12
|
-
Esta classe contém o conjunto de utilidades para ler
|
|
13
|
-
e interpretar os campos do arquivo MEDIAS-MERC.CSV, construindo um
|
|
14
|
-
objeto `MediasMerc` cujas informações são as mesmas do arquivo.
|
|
15
|
-
|
|
16
|
-
Este objeto existe para retirar do modelo de dados a complexidade
|
|
17
|
-
de iterar pelas linhas do arquivo, recortar colunas, converter
|
|
18
|
-
tipos de dados, dentre outras tarefas necessárias para a leitura.
|
|
19
|
-
|
|
9
|
+
Bloco com o conteúdo da tabela existente no arquivo `MEDIAS-MERC.CSV`.
|
|
20
10
|
"""
|
|
21
11
|
|
|
22
|
-
def __init__(self,
|
|
23
|
-
super().__init__(
|
|
24
|
-
|
|
25
|
-
def
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
12
|
+
def __init__(self, previous=None, next=None, data=None) -> None:
|
|
13
|
+
super().__init__(previous, next, data)
|
|
14
|
+
|
|
15
|
+
def __eq__(self, o: object) -> bool:
|
|
16
|
+
if not isinstance(o, TabelaMediasmerc):
|
|
17
|
+
return False
|
|
18
|
+
bloco: TabelaMediasmerc = o
|
|
19
|
+
if not all(
|
|
20
|
+
[
|
|
21
|
+
isinstance(self.data, pd.DataFrame),
|
|
22
|
+
isinstance(o.data, pd.DataFrame),
|
|
23
|
+
]
|
|
24
|
+
):
|
|
25
|
+
return False
|
|
26
|
+
else:
|
|
27
|
+
return self.data.equals(bloco.data)
|
|
28
|
+
|
|
29
|
+
# Override
|
|
30
|
+
def read(self, file: IO, *args, **kwargs):
|
|
31
|
+
tabela = pd.read_csv(file, skipinitialspace=True)
|
|
32
|
+
col_sbm = "SBM_ext"
|
|
33
|
+
tabela = tabela.rename(columns={col_sbm: "codigo_submercado"})
|
|
34
|
+
tabela = tabela.loc[tabela["codigo_submercado"] > 0]
|
|
35
|
+
cols = tabela.columns.tolist()
|
|
36
|
+
df = tabela.drop(columns=[cols[-1]])
|
|
37
|
+
cols_id = ["VAR", "codigo_submercado"]
|
|
38
|
+
cols_estagios = [c for c in df.columns.tolist() if c not in cols_id]
|
|
39
|
+
df = df.melt(
|
|
40
|
+
id_vars=cols_id,
|
|
41
|
+
value_vars=cols_estagios,
|
|
42
|
+
var_name="estagio",
|
|
43
|
+
value_name="valor",
|
|
44
|
+
)
|
|
45
|
+
df["estagio"] = df["estagio"].astype(int)
|
|
46
|
+
df["estagio"] -= df["estagio"].min() - 1
|
|
47
|
+
df = df.pivot_table(
|
|
48
|
+
index=["estagio", "codigo_submercado"],
|
|
49
|
+
columns="VAR",
|
|
50
|
+
values="valor",
|
|
51
|
+
).reset_index()
|
|
52
|
+
self.data = df
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Imports de módulos externos
|
|
2
|
+
from cfinterface.components.section import Section
|
|
3
|
+
from typing import IO
|
|
4
|
+
import pandas as pd # type: ignore
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class TabelaMediasree(Section):
|
|
8
|
+
"""
|
|
9
|
+
Bloco com o conteúdo da tabela existente no arquivo `MEDIAS-REE.CSV`.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
def __init__(self, previous=None, next=None, data=None) -> None:
|
|
13
|
+
super().__init__(previous, next, data)
|
|
14
|
+
|
|
15
|
+
def __eq__(self, o: object) -> bool:
|
|
16
|
+
if not isinstance(o, TabelaMediasree):
|
|
17
|
+
return False
|
|
18
|
+
bloco: TabelaMediasree = o
|
|
19
|
+
if not all(
|
|
20
|
+
[
|
|
21
|
+
isinstance(self.data, pd.DataFrame),
|
|
22
|
+
isinstance(o.data, pd.DataFrame),
|
|
23
|
+
]
|
|
24
|
+
):
|
|
25
|
+
return False
|
|
26
|
+
else:
|
|
27
|
+
return self.data.equals(bloco.data)
|
|
28
|
+
|
|
29
|
+
# Override
|
|
30
|
+
def read(self, file: IO, *args, **kwargs):
|
|
31
|
+
tabela = pd.read_csv(file, skipinitialspace=True)
|
|
32
|
+
col_ree = "REE_ext"
|
|
33
|
+
tabela = tabela.rename(columns={col_ree: "codigo_ree"})
|
|
34
|
+
tabela = tabela.loc[tabela["codigo_ree"] > 0]
|
|
35
|
+
cols = tabela.columns.tolist()
|
|
36
|
+
df = tabela.drop(columns=[cols[-1]])
|
|
37
|
+
cols_id = ["VAR", "codigo_ree"]
|
|
38
|
+
cols_estagios = [c for c in df.columns.tolist() if c not in cols_id]
|
|
39
|
+
df = df.melt(
|
|
40
|
+
id_vars=cols_id,
|
|
41
|
+
value_vars=cols_estagios,
|
|
42
|
+
var_name="estagio",
|
|
43
|
+
value_name="valor",
|
|
44
|
+
)
|
|
45
|
+
df["estagio"] = df["estagio"].astype(int)
|
|
46
|
+
df["estagio"] -= df["estagio"].min() - 1
|
|
47
|
+
df = df.pivot_table(
|
|
48
|
+
index=["estagio", "codigo_ree"],
|
|
49
|
+
columns="VAR",
|
|
50
|
+
values="valor",
|
|
51
|
+
).reset_index()
|
|
52
|
+
self.data = df
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Imports de módulos externos
|
|
2
|
+
from cfinterface.components.section import Section
|
|
3
|
+
from typing import IO
|
|
4
|
+
import pandas as pd # type: ignore
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class TabelaMediasrep(Section):
|
|
8
|
+
"""
|
|
9
|
+
Bloco com o conteúdo da tabela existente no arquivo `MEDIAS-REP.CSV`.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
def __init__(self, previous=None, next=None, data=None) -> None:
|
|
13
|
+
super().__init__(previous, next, data)
|
|
14
|
+
|
|
15
|
+
def __eq__(self, o: object) -> bool:
|
|
16
|
+
if not isinstance(o, TabelaMediasrep):
|
|
17
|
+
return False
|
|
18
|
+
bloco: TabelaMediasrep = o
|
|
19
|
+
if not all(
|
|
20
|
+
[
|
|
21
|
+
isinstance(self.data, pd.DataFrame),
|
|
22
|
+
isinstance(o.data, pd.DataFrame),
|
|
23
|
+
]
|
|
24
|
+
):
|
|
25
|
+
return False
|
|
26
|
+
else:
|
|
27
|
+
return self.data.equals(bloco.data)
|
|
28
|
+
|
|
29
|
+
# Override
|
|
30
|
+
def read(self, file: IO, *args, **kwargs):
|
|
31
|
+
tabela = pd.read_csv(file, skipinitialspace=True)
|
|
32
|
+
col_rep = "REP_ext"
|
|
33
|
+
tabela = tabela.rename(columns={col_rep: "codigo_restricao"})
|
|
34
|
+
tabela = tabela.loc[tabela["codigo_restricao"] > 0]
|
|
35
|
+
cols = tabela.columns.tolist()
|
|
36
|
+
df = tabela.drop(columns=[cols[-1]])
|
|
37
|
+
cols_id = ["VAR", "codigo_restricao"]
|
|
38
|
+
cols_estagios = [c for c in df.columns.tolist() if c not in cols_id]
|
|
39
|
+
df = df.melt(
|
|
40
|
+
id_vars=cols_id,
|
|
41
|
+
value_vars=cols_estagios,
|
|
42
|
+
var_name="estagio",
|
|
43
|
+
value_name="valor",
|
|
44
|
+
)
|
|
45
|
+
df["estagio"] = df["estagio"].astype(int)
|
|
46
|
+
df["estagio"] -= df["estagio"].min() - 1
|
|
47
|
+
df = df.pivot_table(
|
|
48
|
+
index=["estagio", "codigo_restricao"],
|
|
49
|
+
columns="VAR",
|
|
50
|
+
values="valor",
|
|
51
|
+
).reset_index()
|
|
52
|
+
self.data = df
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Imports de módulos externos
|
|
2
|
+
from cfinterface.components.section import Section
|
|
3
|
+
from typing import IO
|
|
4
|
+
import pandas as pd # type: ignore
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class TabelaMediasrhq(Section):
|
|
8
|
+
"""
|
|
9
|
+
Bloco com o conteúdo da tabela existente no arquivo `MEDIAS-RHQ.CSV`.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
def __init__(self, previous=None, next=None, data=None) -> None:
|
|
13
|
+
super().__init__(previous, next, data)
|
|
14
|
+
|
|
15
|
+
def __eq__(self, o: object) -> bool:
|
|
16
|
+
if not isinstance(o, TabelaMediasrhq):
|
|
17
|
+
return False
|
|
18
|
+
bloco: TabelaMediasrhq = o
|
|
19
|
+
if not all(
|
|
20
|
+
[
|
|
21
|
+
isinstance(self.data, pd.DataFrame),
|
|
22
|
+
isinstance(o.data, pd.DataFrame),
|
|
23
|
+
]
|
|
24
|
+
):
|
|
25
|
+
return False
|
|
26
|
+
else:
|
|
27
|
+
return self.data.equals(bloco.data)
|
|
28
|
+
|
|
29
|
+
# Override
|
|
30
|
+
def read(self, file: IO, *args, **kwargs):
|
|
31
|
+
tabela = pd.read_csv(file, skipinitialspace=True)
|
|
32
|
+
col_rhq = "RHQ_ext"
|
|
33
|
+
tabela = tabela.rename(columns={col_rhq: "codigo_restricao"})
|
|
34
|
+
tabela = tabela.loc[tabela["codigo_restricao"] > 0]
|
|
35
|
+
cols = tabela.columns.tolist()
|
|
36
|
+
df = tabela.drop(columns=[cols[-1]])
|
|
37
|
+
cols_id = ["VAR", "codigo_restricao"]
|
|
38
|
+
cols_estagios = [c for c in df.columns.tolist() if c not in cols_id]
|
|
39
|
+
df = df.melt(
|
|
40
|
+
id_vars=cols_id,
|
|
41
|
+
value_vars=cols_estagios,
|
|
42
|
+
var_name="estagio",
|
|
43
|
+
value_name="valor",
|
|
44
|
+
)
|
|
45
|
+
df["estagio"] = df["estagio"].astype(int)
|
|
46
|
+
df["estagio"] -= df["estagio"].min() - 1
|
|
47
|
+
df = df.pivot_table(
|
|
48
|
+
index=["estagio", "codigo_restricao"],
|
|
49
|
+
columns="VAR",
|
|
50
|
+
values="valor",
|
|
51
|
+
).reset_index()
|
|
52
|
+
self.data = df
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Imports de módulos externos
|
|
2
|
+
from cfinterface.components.section import Section
|
|
3
|
+
from typing import IO
|
|
4
|
+
import pandas as pd # type: ignore
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class TabelaMediasrhv(Section):
|
|
8
|
+
"""
|
|
9
|
+
Bloco com o conteúdo da tabela existente no arquivo `MEDIAS-RHV.CSV`.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
def __init__(self, previous=None, next=None, data=None) -> None:
|
|
13
|
+
super().__init__(previous, next, data)
|
|
14
|
+
|
|
15
|
+
def __eq__(self, o: object) -> bool:
|
|
16
|
+
if not isinstance(o, TabelaMediasrhv):
|
|
17
|
+
return False
|
|
18
|
+
bloco: TabelaMediasrhv = o
|
|
19
|
+
if not all(
|
|
20
|
+
[
|
|
21
|
+
isinstance(self.data, pd.DataFrame),
|
|
22
|
+
isinstance(o.data, pd.DataFrame),
|
|
23
|
+
]
|
|
24
|
+
):
|
|
25
|
+
return False
|
|
26
|
+
else:
|
|
27
|
+
return self.data.equals(bloco.data)
|
|
28
|
+
|
|
29
|
+
# Override
|
|
30
|
+
def read(self, file: IO, *args, **kwargs):
|
|
31
|
+
tabela = pd.read_csv(file, skipinitialspace=True)
|
|
32
|
+
col_rhv = "RHV_ext"
|
|
33
|
+
tabela = tabela.rename(columns={col_rhv: "codigo_restricao"})
|
|
34
|
+
tabela = tabela.loc[tabela["codigo_restricao"] > 0]
|
|
35
|
+
cols = tabela.columns.tolist()
|
|
36
|
+
df = tabela.drop(columns=[cols[-1]])
|
|
37
|
+
cols_id = ["VAR", "codigo_restricao"]
|
|
38
|
+
cols_estagios = [c for c in df.columns.tolist() if c not in cols_id]
|
|
39
|
+
df = df.melt(
|
|
40
|
+
id_vars=cols_id,
|
|
41
|
+
value_vars=cols_estagios,
|
|
42
|
+
var_name="estagio",
|
|
43
|
+
value_name="valor",
|
|
44
|
+
)
|
|
45
|
+
df["estagio"] = df["estagio"].astype(int)
|
|
46
|
+
df["estagio"] -= df["estagio"].min() - 1
|
|
47
|
+
df = df.pivot_table(
|
|
48
|
+
index=["estagio", "codigo_restricao"],
|
|
49
|
+
columns="VAR",
|
|
50
|
+
values="valor",
|
|
51
|
+
).reset_index()
|
|
52
|
+
self.data = df
|
|
@@ -1,35 +1,51 @@
|
|
|
1
|
-
# Imports do próprio módulo
|
|
2
|
-
from inewave._utils.leituracsv import LeituraCSV
|
|
3
|
-
|
|
4
1
|
# Imports de módulos externos
|
|
2
|
+
from cfinterface.components.section import Section
|
|
3
|
+
from typing import IO
|
|
4
|
+
import pandas as pd # type: ignore
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
class
|
|
7
|
+
class TabelaMediassin(Section):
|
|
8
8
|
"""
|
|
9
|
-
|
|
10
|
-
existente em um diretório de saídas do NEWAVE.
|
|
11
|
-
|
|
12
|
-
Esta classe contém o conjunto de utilidades para ler
|
|
13
|
-
e interpretar os campos do arquivo MEDIAS-SIN.CSV, construindo um
|
|
14
|
-
objeto `MediasSIN` cujas informações são as mesmas do arquivo.
|
|
15
|
-
|
|
16
|
-
Este objeto existe para retirar do modelo de dados a complexidade
|
|
17
|
-
de iterar pelas linhas do arquivo, recortar colunas, converter
|
|
18
|
-
tipos de dados, dentre outras tarefas necessárias para a leitura.
|
|
19
|
-
|
|
9
|
+
Bloco com o conteúdo da tabela existente no arquivo `MEDIAS-SIN.CSV`.
|
|
20
10
|
"""
|
|
21
11
|
|
|
22
|
-
def __init__(self,
|
|
23
|
-
super().__init__(
|
|
24
|
-
|
|
25
|
-
def
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
12
|
+
def __init__(self, previous=None, next=None, data=None) -> None:
|
|
13
|
+
super().__init__(previous, next, data)
|
|
14
|
+
|
|
15
|
+
def __eq__(self, o: object) -> bool:
|
|
16
|
+
if not isinstance(o, TabelaMediassin):
|
|
17
|
+
return False
|
|
18
|
+
bloco: TabelaMediassin = o
|
|
19
|
+
if not all(
|
|
20
|
+
[
|
|
21
|
+
isinstance(self.data, pd.DataFrame),
|
|
22
|
+
isinstance(o.data, pd.DataFrame),
|
|
23
|
+
]
|
|
24
|
+
):
|
|
25
|
+
return False
|
|
26
|
+
else:
|
|
27
|
+
return self.data.equals(bloco.data)
|
|
28
|
+
|
|
29
|
+
# Override
|
|
30
|
+
def read(self, file: IO, *args, **kwargs):
|
|
31
|
+
tabela = pd.read_csv(file, skipinitialspace=True)
|
|
32
|
+
col_sin = "SIN"
|
|
33
|
+
tabela = tabela.rename(columns={col_sin: "codigo_sin"})
|
|
34
|
+
cols = tabela.columns.tolist()
|
|
35
|
+
df = tabela.drop(columns=[cols[0], cols[-1]])
|
|
36
|
+
cols_id = ["VAR"]
|
|
37
|
+
cols_estagios = [c for c in df.columns.tolist() if c not in cols_id]
|
|
38
|
+
df = df.melt(
|
|
39
|
+
id_vars=cols_id,
|
|
40
|
+
value_vars=cols_estagios,
|
|
41
|
+
var_name="estagio",
|
|
42
|
+
value_name="valor",
|
|
43
|
+
)
|
|
44
|
+
df["estagio"] = df["estagio"].astype(int)
|
|
45
|
+
df["estagio"] -= df["estagio"].min() - 1
|
|
46
|
+
df = df.pivot_table(
|
|
47
|
+
index=["estagio"],
|
|
48
|
+
columns="VAR",
|
|
49
|
+
values="valor",
|
|
50
|
+
).reset_index()
|
|
51
|
+
self.data = df
|