@@ -412,7 +412,7 @@ def get_data(self, commodity, state, county):
412
412
file_name = f"{ self .head } /{ commodity } -{ state } -{ county } .csv"
413
413
return self .get_file_object (file_name ).read ().decode ("utf-8" )
414
414
415
- class AemoDataset (IpfsDataset ):
415
+ class PowerDataset (IpfsDataset ):
416
416
"""
417
417
Abstract class from which all AEMO datasets inherit
418
418
"""
@@ -431,7 +431,10 @@ def get_date_range_from_metadata(self, h):
431
431
return: list of [start_time, end_time]
432
432
"""
433
433
metadata = self .get_metadata (h )
434
- str_dates = (metadata ["date_range" ][0 ], metadata ["date_range" ][1 ])
434
+ try :
435
+ str_dates = (metadata ["date_range" ][0 ], metadata ["date_range" ][1 ])
436
+ except KeyError :
437
+ str_dates = (metadata ["date range" ][0 ], metadata ["date range" ][1 ])
435
438
return [datetime .datetime .fromisoformat (dt ) for dt in str_dates ]
436
439
437
440
def get_data (self ):
@@ -444,7 +447,7 @@ def get_data(self):
444
447
ret_dict = {** ret_dict , ** new_dict }
445
448
return ret_dict
446
449
447
- class AemoPowerDataset (AemoDataset ):
450
+ class AemoPowerDataset (PowerDataset ):
448
451
"""
449
452
Instantiable class for AEMO Victoria power data
450
453
"""
@@ -472,7 +475,7 @@ def extract_data_from_gz(self, date_range, ipfs_hash):
472
475
return data_dict
473
476
474
477
475
- class AemoGasDataset (AemoDataset ):
478
+ class AemoGasDataset (PowerDataset ):
476
479
"""
477
480
Instantiable class for AEMO Victoria gas data
478
481
"""
@@ -494,3 +497,30 @@ def extract_data_from_gz(self, date_range, ipfs_hash):
494
497
data_dict [date_itr ] = float (day_data )
495
498
date_itr = date_itr + datetime .timedelta (days = 1 )
496
499
return data_dict
500
+
501
+ class AesoPowerDataset (PowerDataset ):
502
+ """
503
+ Instantiable class for AEMO Victoria gas data
504
+ """
505
+ @property
506
+ def dataset (self ):
507
+ return "alberta_power-hourly"
508
+
509
+ @property
510
+ def data_file_name (self ):
511
+ return "aeso_update.gz"
512
+
513
+ def extract_data_from_gz (self , date_range , ipfs_hash ):
514
+ with gzip .open (self .get_file_object (f"{ ipfs_hash } /{ self .data_file_name } " )) as gz :
515
+ cell_text = gz .read ().decode ('utf-8' )
516
+ time_itr = date_range [0 ]
517
+ data_dict = {}
518
+ for year_data in cell_text .split ('\n ' ):
519
+ for hour_data in year_data .split (',' ):
520
+ if not hour_data :
521
+ price , ravg , demand = - 9999 , - 9999 , - 9999
522
+ else :
523
+ price , ravg , demand = hour_data .split ("_" )
524
+ data_dict [time_itr ] = {"price" : float (price ), "ravg" : float (ravg ), "demand" : float (demand )}
525
+ time_itr = time_itr + datetime .timedelta (hours = 1 )
526
+ return data_dict
0 commit comments