Skip to content

Commit

Permalink
Added support for RSG, totalload, WindActual, SolarActual, NAI, regio…
Browse files Browse the repository at this point in the history
…naldirectionaltransfer, generationoutagesplusminusfivedays
  • Loading branch information
Will-amSun committed Oct 30, 2024
1 parent 93e4d57 commit 8fc2218
Show file tree
Hide file tree
Showing 2 changed files with 182 additions and 8 deletions.
176 changes: 175 additions & 1 deletion MISOReports/MISOReports.py
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ def parse_ace(
def parse_AncillaryServicesMCP(
res: requests.Response,
) -> pd.DataFrame:
raise NotImplementedError("Result contains 2 csv tables")
raise NotImplementedError("Result contains 2 csv tables.")

@staticmethod
def parse_cts(
Expand Down Expand Up @@ -578,6 +578,117 @@ def parse_reservebindingconstraints(
)

return df

@staticmethod
def parse_totalload(
res: requests.Response,
) -> pd.DataFrame:
raise NotImplementedError("Result contains 3 csv tables.")

@staticmethod
def parse_RSG(
res: requests.Response,
) -> pd.DataFrame:
text = res.text
csv_data = "\n".join(text.splitlines()[2:])

df = pd.read_csv(
filepath_or_buffer=io.StringIO(csv_data),
parse_dates=[
"MKT_INT_END_EST",
],
date_format="%Y-%m-%d %H:%M:%S %p",
)

return df

@staticmethod
def parse_WindActual(
res: requests.Response,
) -> pd.DataFrame:
text = res.text
dictionary = json.loads(text)

df = pd.DataFrame(
data=dictionary["instance"],
).astype(
dtype={
"HourEndingEST": pd.Int64Dtype(),
"Value": pd.Float64Dtype(),
}
)

df["DateTimeEST"] = pd.to_datetime(df["DateTimeEST"], format="%Y-%m-%d %I:%M:%S %p")

return df

@staticmethod
def parse_SolarActual(
res: requests.Response,
) -> pd.DataFrame:
text = res.text
dictionary = json.loads(text)

df = pd.DataFrame(
data=dictionary["instance"],
).astype(
dtype={
"HourEndingEST": pd.Int64Dtype(),
"Value": pd.Float64Dtype(),
}
)

df["DateTimeEST"] = pd.to_datetime(df["DateTimeEST"], format="%Y-%m-%d %I:%M:%S %p")

return df

@staticmethod
def parse_NAI(
res: requests.Response,
) -> pd.DataFrame:
text = res.text
csv_data = "\n".join(text.splitlines()[2:])

df = pd.read_csv(
filepath_or_buffer=io.StringIO(csv_data),
)

return df

@staticmethod
def parse_regionaldirectionaltransfer(
res: requests.Response,
) -> pd.DataFrame:
text = res.text
csv_data = "\n".join(text.splitlines()[2:])

df = pd.read_csv(
filepath_or_buffer=io.StringIO(csv_data),
parse_dates=[
"INTERVALEST",
],
date_format="%Y-%m-%d %H:%M:%S %p",
)

return df

@staticmethod
def parse_generationoutagesplusminusfivedays(
res: requests.Response,
) -> pd.DataFrame:
text = res.text
csv_data = "\n".join(text.splitlines()[2:])

df = pd.read_csv(
filepath_or_buffer=io.StringIO(csv_data),
parse_dates=[
"OutageDate",
],
date_format="%Y-%m-%d %H:%M:%S %p",
)

return df


report_mappings: dict[str, Report] = {
"fuelmix": Report(
Expand Down Expand Up @@ -793,6 +904,69 @@ def parse_reservebindingconstraints(
type_to_parse="csv",
parser=ReportParsers.parse_reservebindingconstraints
),

"RSG": Report(
url_builder=MISORTWDDataBrokerURLBuilder(
target="getRSG",
supported_extensions=["csv", "xml", "json"],
),
type_to_parse="csv",
parser=ReportParsers.parse_RSG
),

"totalload": Report(
url_builder=MISORTWDDataBrokerURLBuilder(
target="gettotalload",
supported_extensions=["csv", "xml", "json"],
),
type_to_parse="csv",
parser=ReportParsers.parse_totalload
),

"WindActual": Report(
url_builder=MISORTWDDataBrokerURLBuilder(
target="getWindActual",
supported_extensions=["xml", "json"],
),
type_to_parse="json",
parser=ReportParsers.parse_WindActual
),

"SolarActual": Report(
url_builder=MISORTWDDataBrokerURLBuilder(
target="getSolarActual",
supported_extensions=["xml", "json"],
),
type_to_parse="json",
parser=ReportParsers.parse_SolarActual
),

"NAI": Report(
url_builder=MISORTWDDataBrokerURLBuilder(
target="getNAI",
supported_extensions=["csv", "xml", "json"],
),
type_to_parse="csv",
parser=ReportParsers.parse_NAI
),

"regionaldirectionaltransfer": Report(
url_builder=MISORTWDDataBrokerURLBuilder(
target="getregionaldirectionaltransfer",
supported_extensions=["csv", "xml", "json"],
),
type_to_parse="csv",
parser=ReportParsers.parse_regionaldirectionaltransfer
),

"generationoutagesplusminusfivedays": Report(
url_builder=MISORTWDDataBrokerURLBuilder(
target="getgenerationoutagesplusminusfivedays",
supported_extensions=["csv", "xml", "json"],
),
type_to_parse="csv",
parser=ReportParsers.parse_generationoutagesplusminusfivedays
),
}

@staticmethod
Expand Down
14 changes: 7 additions & 7 deletions TODOS.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@ https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx?messageTyp
https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx?messageType=getrealtimebindingconstraints&returnType=csv CSV XML JSON
https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx?messageType=getrealtimebindingsrpbconstraints&returnType=csv CSV XML JSON
https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx?messageType=getreservebindingconstraints&returnType=csv CSV XML JSON
https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx?messageType=getRSG&returnType=csv CSV XML JSON
https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx?messageType=gettotalload&returnType=csv CSV XML JSON
https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx?messageType=getWindActual&returnType=xml XML JSON
https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx?messageType=getSolarActual&returnType=xml XML JSON
https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx?messageType=getNAI&returnType=csv CSV XML JSON
https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx?messageType=getregionaldirectionaltransfer&returnType=csv CSV XML JSON
https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx?messageType=getgenerationoutagesplusminusfivedays&returnType=csv CSV XML JSON
https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx?messageType=getRSG&returnType=csv CSV XML JSON
https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx?messageType=gettotalload&returnType=csv CSV XML JSON
https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx?messageType=getWindActual&returnType=xml XML JSON
https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx?messageType=getSolarActual&returnType=xml XML JSON
https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx?messageType=getNAI&returnType=csv CSV XML JSON
https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx?messageType=getregionaldirectionaltransfer&returnType=csv CSV XML JSON
https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx?messageType=getgenerationoutagesplusminusfivedays&returnType=csv CSV XML JSON
```

### Support for MISORTWDBIReporter reports
Expand Down

0 comments on commit 8fc2218

Please sign in to comment.