Skip to content

Commit aae0ac5

Browse files
committedOct 3, 2017
modifica escritura de archivos para eliminar valores repetidos
1 parent 9d7de6d commit aae0ac5

File tree

7 files changed

+94
-105
lines changed

7 files changed

+94
-105
lines changed
 

‎data/SIC/Cen/Termica/CenTerEtaPMax_EOLICA_16blo_SIC.csv

+16-16
Original file line numberDiff line numberDiff line change
@@ -159,22 +159,22 @@ CenINum,CenA
159159
10,F,*,*,14,Negrete Cuel,CenPotMax,EtaMes,0,0,28.70416997,0,3.464296375,25.73477307,0.989798964,13.26330612,12.76840664,12.47146695,2.326027566,10.59084892
160160
10,F,*,*,15,Negrete Cuel,CenPotMax,EtaMes,10.06625547,0,32.23775227,0.049489948,7.156246512,32.4951,7.690737953,1.484698447,11.43217804,6.859306823,16.92556229,10.06625547
161161
10,F,*,*,16,Negrete Cuel,CenPotMax,EtaMes,10.06625547,0,32.23775227,0.049489948,7.156246512,32.4951,7.690737953,1.484698447,11.43217804,6.859306823,16.92556229,10.06625547
162-
11,F,*,*,1,El Array�n,CenPotMax,EtaMes,36.33,43.63,53.57,24.85,14.67,0.9,45.57,0,49.07,23.6,36,3.73
163-
11,F,*,*,2,El Array�n,CenPotMax,EtaMes,36.33,43.63,53.57,24.85,14.67,0.9,45.57,0,49.07,23.6,36,3.73
164-
11,F,*,*,3,El Array�n,CenPotMax,EtaMes,18.57,0,44.85,23.75,13.6,3.58,62.92,0,24.45,12.38,15.15,0
165-
11,F,*,*,4,El Array�n,CenPotMax,EtaMes,18.57,0,44.85,23.75,13.6,3.58,62.92,0,24.45,12.38,15.15,0
166-
11,F,*,*,5,El Array�n,CenPotMax,EtaMes,3.85,1.1,40.8,32.75,20.75,3.57,28.63,0,20.5,1.45,12.1,0
167-
11,F,*,*,6,El Array�n,CenPotMax,EtaMes,3.85,1.1,40.8,32.75,20.75,3.57,28.63,0,20.5,1.45,12.1,0
168-
11,F,*,*,7,El Array�n,CenPotMax,EtaMes,1.2,5.9,69.58,34.13,17.93,5.2,13.5,0,17.37,0,5.85,0
169-
11,F,*,*,8,El Array�n,CenPotMax,EtaMes,1.2,5.9,69.58,34.13,17.93,5.2,13.5,0,17.37,0,5.85,0
170-
11,F,*,*,9,El Array�n,CenPotMax,EtaMes,20.2,27.5,44.07,35.77,17.5,3.55,40.48,0,32.9,14.71,17.77,0.73
171-
11,F,*,*,10,El Array�n,CenPotMax,EtaMes,20.2,27.5,44.07,35.77,17.5,3.55,40.48,0,32.9,14.71,17.77,0.73
172-
11,F,*,*,11,El Array�n,CenPotMax,EtaMes,22.7,39.4,76.3,52.25,20.5,8.1,53.6,0,74.9,37.05,53,6.17
173-
11,F,*,*,12,El Array�n,CenPotMax,EtaMes,22.7,39.4,76.3,52.25,20.5,8.1,53.6,0,74.9,37.05,53,6.17
174-
11,F,*,*,13,El Array�n,CenPotMax,EtaMes,25.45,50.3,81.7,54.1,31.3,16.9,54.6,0,84.75,36.55,62.35,20.8
175-
11,F,*,*,14,El Array�n,CenPotMax,EtaMes,25.45,50.3,81.7,54.1,31.3,16.9,54.6,0,84.75,36.55,62.35,20.8
176-
11,F,*,*,15,El Array�n,CenPotMax,EtaMes,19.17,65.15,63.85,36,33.37,28.63,40.67,0,99.6,34.8,32.23,19.17
177-
11,F,*,*,16,El Array�n,CenPotMax,EtaMes,19.17,65.15,63.85,36,33.37,28.63,40.67,0,99.6,34.8,32.23,19.17
162+
11,F,*,*,1,E�lica El Array�n,CenPotMax,EtaMes,36.33,43.63,53.57,24.85,14.67,0.9,45.57,0,49.07,23.6,36,3.73
163+
11,F,*,*,2,E�lica El Array�n,CenPotMax,EtaMes,36.33,43.63,53.57,24.85,14.67,0.9,45.57,0,49.07,23.6,36,3.73
164+
11,F,*,*,3,E�lica El Array�n,CenPotMax,EtaMes,18.57,0,44.85,23.75,13.6,3.58,62.92,0,24.45,12.38,15.15,0
165+
11,F,*,*,4,E�lica El Array�n,CenPotMax,EtaMes,18.57,0,44.85,23.75,13.6,3.58,62.92,0,24.45,12.38,15.15,0
166+
11,F,*,*,5,E�lica El Array�n,CenPotMax,EtaMes,3.85,1.1,40.8,32.75,20.75,3.57,28.63,0,20.5,1.45,12.1,0
167+
11,F,*,*,6,E�lica El Array�n,CenPotMax,EtaMes,3.85,1.1,40.8,32.75,20.75,3.57,28.63,0,20.5,1.45,12.1,0
168+
11,F,*,*,7,E�lica El Array�n,CenPotMax,EtaMes,1.2,5.9,69.58,34.13,17.93,5.2,13.5,0,17.37,0,5.85,0
169+
11,F,*,*,8,E�lica El Array�n,CenPotMax,EtaMes,1.2,5.9,69.58,34.13,17.93,5.2,13.5,0,17.37,0,5.85,0
170+
11,F,*,*,9,E�lica El Array�n,CenPotMax,EtaMes,20.2,27.5,44.07,35.77,17.5,3.55,40.48,0,32.9,14.71,17.77,0.73
171+
11,F,*,*,10,E�lica El Array�n,CenPotMax,EtaMes,20.2,27.5,44.07,35.77,17.5,3.55,40.48,0,32.9,14.71,17.77,0.73
172+
11,F,*,*,11,E�lica El Array�n,CenPotMax,EtaMes,22.7,39.4,76.3,52.25,20.5,8.1,53.6,0,74.9,37.05,53,6.17
173+
11,F,*,*,12,E�lica El Array�n,CenPotMax,EtaMes,22.7,39.4,76.3,52.25,20.5,8.1,53.6,0,74.9,37.05,53,6.17
174+
11,F,*,*,13,E�lica El Array�n,CenPotMax,EtaMes,25.45,50.3,81.7,54.1,31.3,16.9,54.6,0,84.75,36.55,62.35,20.8
175+
11,F,*,*,14,E�lica El Array�n,CenPotMax,EtaMes,25.45,50.3,81.7,54.1,31.3,16.9,54.6,0,84.75,36.55,62.35,20.8
176+
11,F,*,*,15,E�lica El Array�n,CenPotMax,EtaMes,19.17,65.15,63.85,36,33.37,28.63,40.67,0,99.6,34.8,32.23,19.17
177+
11,F,*,*,16,E�lica El Array�n,CenPotMax,EtaMes,19.17,65.15,63.85,36,33.37,28.63,40.67,0,99.6,34.8,32.23,19.17
178178
12,F,*,*,1,San Pedro E�lico,CenPotMax,EtaMes,13.67,19.17,15.47,34.4,1.43,7.4,10.13,21.45,0.57,1.2,12.6,19.23
179179
12,F,*,*,2,San Pedro E�lico,CenPotMax,EtaMes,13.67,19.17,15.47,34.4,1.43,7.4,10.13,21.45,0.57,1.2,12.6,19.23
180180
12,F,*,*,3,San Pedro E�lico,CenPotMax,EtaMes,6.02,0.15,32.67,34.83,3.47,18,4.32,28.5,2.1,2.45,24.05,24.4

‎main.py

+9-22
Original file line numberDiff line numberDiff line change
@@ -57,47 +57,34 @@
5757
BLOCK_RESOLUTION = False
5858

5959
# - - - - - - BUSBAR - - - - - - #
60-
print '|------------------------|'
61-
print '| generating busbar data |'
62-
print '|------------------------|'
63-
print ''
60+
print '-- generating busbar data --'
61+
6462
busbar = busbar.Busbar(path_datos, path_resultados, args.model)
6563
# busbar.run()
6664
# - - - - - - BRANCH - - - - - - #
67-
print '|------------------------|'
68-
print '| generating branch data |'
69-
print '|------------------------|'
70-
print ''
65+
66+
print '-- generating branch data --'
7167
branch = branch.Branch(path_datos, path_resultados, args.model)
7268
# branch.run()
7369
# - - - - - - GENERATOR - - - - - - #
74-
print '|---------------------------|'
75-
print '| generating generator data |'
76-
print '|---------------------------|'
77-
print ''
70+
print '-- generating generator data --'
7871
generator = generator.Generator(path_datos, path_resultados, args.model)
7972
# generator.run()
8073

8174
# - - - - - - DEMAND - - - - - - #
82-
print '|------------------------|'
83-
print '| generating demand data |'
84-
print '|------------------------|'
85-
print ''
75+
print '-- generating demand data --'
8676
dem_year_ini='2017'
8777
dem_year_end='2018'
8878
dem_year_ose='2013'
8979
demand = demandload.DemandLoad(path_datos, path_resultados, args.model, dem_year_ini, dem_year_end, dem_year_ose)
90-
# demand.run()
80+
demand.run()
9181

9282
# - - - - - - DEMAND - - - - - - #
93-
print '|-------------------------|'
94-
print '| generating profile data |'
95-
print '|-------------------------|'
96-
print ''
83+
print '-- generating profile data --'
9784
profile_power_year_ini='2017'
9885
profile_power_year_ose='2018'
9986
profile_power = profiles_ERNC.ProfilePower(path_datos, path_resultados, args.model)
100-
profile_power.run()
87+
# profile_power.run()
10188

10289
# gen_unav = GenUnav(self._ose_dir, self._ameba_dir, self._model)
10390
# fuel = Fuel(self._ose_dir, self._ameba_dir, self._model)

‎module/branch.py

+20-14
Original file line numberDiff line numberDiff line change
@@ -233,9 +233,9 @@ def __max_flow(self):
233233
max_year = int(branch[BRANCH_MAXFLOW_END_TIME_OSE][7:])
234234

235235
# LIST OF MONTH DATES FROM MIN YEAR TO MAX YEAR
236-
dates = self.__month_list(min_year, max_year)
237-
for date in dates:
238-
date.update(dic_maxflow)
236+
indexed_parameter = self.__month_list(min_year, max_year)
237+
for ip in indexed_parameter:
238+
ip.update(dic_maxflow)
239239

240240
for branch in itertools.chain(self._branch_maxflow_OSE_SIC, self._branch_maxflow_OSE_SING):
241241
if branch[BRANCH_MAXFLOW_FLAG_OSE] == 'T':
@@ -278,22 +278,28 @@ def __max_flow(self):
278278
)
279279

280280
while index_ini <= index_end:
281-
dates[index_ini][name] = maxflow
281+
indexed_parameter[index_ini][name] = maxflow
282282
index_ini += 1
283283

284-
columns = dates[0].keys()
285-
columns.insert(0, columns.pop(columns.index(BRANCH_TIME_AMEBA)))
286-
columns.insert(1, columns.pop(columns.index('scenario')))
287-
columns.pop(columns.index('index'))
288-
289284
directory = os.path.join(self._ameba_dir, DIR_AMEBA_BRANCH)
290285
check_directory(directory)
291286

292-
writer = writer_csv(os.path.join(DIR_AMEBA_BRANCH, FILE_AMEBA_BRANCH_MAXFLOW), columns, self._ameba_dir)
293-
writer.writeheader()
294-
for date in dates:
295-
date.pop('index')
296-
writer.writerow(date)
287+
header = indexed_parameter[0].keys()
288+
header.remove('time')
289+
header.remove('scenario')
290+
header.remove('index')
291+
292+
output_file = writer_csv(FILE_AMEBA_BRANCH_MAXFLOW, ['name', 'time', 'scenario', 'value'],
293+
os.path.join(self._ameba_dir, DIR_AMEBA_BRANCH))
294+
output_file.writeheader()
295+
# REMOVER VALORES REPETIDOS
296+
for h in header:
297+
for i in range(0, len(indexed_parameter)):
298+
if indexed_parameter[i][h] == indexed_parameter[i - 1][h] and i > 0:
299+
continue
300+
output_file.writerow(
301+
dict(name=h, time=indexed_parameter[i]['time'], scenario=indexed_parameter[i]['scenario'],
302+
value=indexed_parameter[i][h]))
297303

298304
def run(self):
299305
"""Main execution point."""

‎module/busbar.py

-2
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,6 @@ def __parameters(self):
9999
def run(self):
100100
"""Main execution point."""
101101
self.__parameters()
102-
print 'busbar parameters ready'
103-
104102

105103
def main():
106104
"""Main program."""

‎module/demandload.py

+24-26
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,6 @@ def _convert_demand(self):
217217

218218
""" demand profile duration"""
219219
# TODO: Replace below correct column values
220-
221220
demand = self._time_year(int(self._year_ose))
222221

223222
""" SIC & SING BAR LIST"""
@@ -263,14 +262,14 @@ def _convert_demand(self):
263262
demand_reduced.append(demand[i])
264263

265264
""" DATES FOR ALL YEARS"""
266-
dem = []
265+
indexed_parameter = []
267266
i = 0
268267
profile_demand_iter = demand_reduced if HRS_REDUCED is True else demand
269268

270269
for years in range(int(self._year_ini), int(self._year_end) + 1):
271270
for element in (profile_demand_iter):
272-
dem.append(copy.deepcopy(element))
273-
dem[i].update({DEM_TIME_AMEBA: element.copy()[DEM_TIME_AMEBA].replace(year=years)})
271+
indexed_parameter.append(copy.deepcopy(element))
272+
indexed_parameter[i].update({DEM_TIME_AMEBA: element.copy()[DEM_TIME_AMEBA].replace(year=years)})
274273
i += 1
275274

276275
""" BLOCK & STAGE GENERATOR"""
@@ -296,16 +295,14 @@ def _convert_demand(self):
296295
os.path.join(self._ameba_dir, DIR_AMEBA_DEM))
297296
writer_block.writeheader()
298297

299-
print 'stage-block structure file ready'
300-
301298
for element in dem1:
302299
element.update({'time': self._date_time(element['time'], element['time'].year)})
303300
element.pop(DEM_SCENARIO_AMEBA)
304301
writer_block.writerow(element)
305302

306303
# - - - - - INDEXED PARAMETERS FILE - - - - - #
307304
""" ASSIGN VALUE FOR RESPECTIVE DATE AND BLOCK"""
308-
for element in dem:
305+
for element in indexed_parameter:
309306
year = int(element[DEM_TIME_AMEBA].year)
310307
block = int(element[DEM_BLOCK_AMEBA])
311308
month = MONTH_INDEX[int(element[DEM_TIME_AMEBA].month)]
@@ -380,22 +377,27 @@ def _convert_demand(self):
380377

381378
element.update({DEM_TIME_AMEBA: self._date_time(element[DEM_TIME_AMEBA], element[DEM_TIME_AMEBA].year)})
382379

383-
columns = dem[0].keys()
384-
columns.insert(0, columns.pop(columns.index(DEM_TIME_AMEBA)))
385-
# columns.insert(1, columns.pop(columns.index(DEM_BLOCK_AMEBA)))
386-
columns.insert(1, columns.pop(columns.index(DEM_SCENARIO_AMEBA)))
387-
columns.pop(columns.index(DEM_BLOCK_AMEBA))
388-
columns.pop(columns.index(DEM_STAGE_AMEBA))
389-
390-
writer = writer_csv(FILE_DEM_AMEBA, columns, os.path.join(self._ameba_dir, DIR_AMEBA_DEM))
391-
writer.writeheader()
392-
393-
for element in dem:
394-
element.pop(DEM_BLOCK_AMEBA)
395-
element.pop(DEM_STAGE_AMEBA)
396-
writer.writerow(element)
380+
# ESCRIBE ARCHIVO Y ELIMINA VALORES REPETIDOS
381+
directory = os.path.join(self._ameba_dir, DIR_AMEBA_GENERATOR)
382+
check_directory(directory)
397383

398-
print 'indexed parameters file ready'
384+
header = indexed_parameter[0].keys()
385+
header.remove('time')
386+
header.remove('scenario')
387+
header.remove('block')
388+
header.remove('stage')
389+
390+
output_file = writer_csv(FILE_DEM_AMEBA, ['name', 'time', 'scenario', 'value'],
391+
os.path.join(self._ameba_dir, DIR_AMEBA_DEM))
392+
output_file.writeheader()
393+
# REMOVER VALORES REPETIDOS
394+
for h in header:
395+
for i in range(0, len(indexed_parameter)):
396+
if indexed_parameter[i][h] == indexed_parameter[i - 1][h] and i > 0 and HRS_REDUCED:
397+
continue
398+
output_file.writerow(
399+
dict(name=h, time=indexed_parameter[i]['time'], scenario=indexed_parameter[i]['scenario'],
400+
value=indexed_parameter[i][h]))
399401

400402
# - - - - - PARAMETERS FILE - - - - - #
401403
writer_par = writer_csv('ele-demand_par.csv', [DEM_NAME_AMEBA, DEM_BUSBAR_AMEBA],
@@ -412,14 +414,10 @@ def _convert_demand(self):
412414
DEM_BUSBAR_AMEBA : remove(bar[DEM_NAME_AMEBA])
413415
})
414416

415-
print 'parameters file ready'
416-
417417
def run(self):
418418
"""Main execution point."""
419419
self._convert_demand()
420420

421-
422-
423421
class SearchDemandFactor(object):
424422
""" """
425423

‎module/generator.py

+17-15
Original file line numberDiff line numberDiff line change
@@ -367,8 +367,8 @@ def __unavailability(self):
367367
dic_pmax.update({remove(generator[GEN_NAME_OSE]): float(generator[GEN_PMAX_OSE])})
368368
dic_pmax_unav.update({remove(generator[GEN_NAME_OSE]): 0})
369369

370-
dates = self.__week_list(YEAR_INI_SIM, YEAR_END_SIM)
371-
for date in dates:
370+
indexed_parameter = self.__week_list(YEAR_INI_SIM, YEAR_END_SIM)
371+
for date in indexed_parameter:
372372
date.update(dic_pmax_unav)
373373

374374
for unav in itertools.chain(unav_thermal_SIC, unav_thermal_SING, unav_pas_SIC, unav_emb_SIC, unav_ser_SIC):
@@ -400,7 +400,7 @@ def __unavailability(self):
400400

401401
""" REPLACE PMAX WITH PMAX_UNAV"""
402402
while index_ini <= index_end:
403-
dates[index_ini][name] = 1 - pmax_unav / pmax
403+
indexed_parameter[index_ini][name] = 1 - pmax_unav / pmax
404404
index_ini += 1
405405

406406
# """ CICLICAL UNAVAILABILITY"""
@@ -411,28 +411,30 @@ def __unavailability(self):
411411
index_end = self.__get_week_list_index(month_end, week_end, YEAR_INI_SIM, year)
412412
""" REPLACE PMAX WITH PMAX_UNAV"""
413413
while index_ini <= index_end:
414-
dates[index_ini][name] = 1 - pmax_unav / pmax
414+
indexed_parameter[index_ini][name] = 1 - pmax_unav / pmax
415415
index_ini += 1
416416

417-
columns = dates[0].keys()
418-
columns.insert(0, columns.pop(columns.index(GEN_TIME_AMEBA)))
419-
# columns.insert(1, columns.pop(columns.index('index')))
420-
421417
directory = os.path.join(self._ameba_dir, DIR_AMEBA_GENERATOR)
422418
check_directory(directory)
423419

424-
writer = writer_csv(os.path.join(DIR_AMEBA_GENERATOR, FILE_AMEBA_GEN_UNAV), columns, self._ameba_dir)
425-
writer.writeheader()
426-
for date in dates:
427-
writer.writerow(date)
420+
header = indexed_parameter[0].keys()
421+
header.remove('time')
422+
423+
output_file = writer_csv(FILE_AMEBA_GEN_UNAV, ['name', 'time', 'value'],
424+
os.path.join(self._ameba_dir, DIR_AMEBA_GENERATOR))
425+
output_file.writeheader()
426+
# REMOVER VALORES REPETIDOS
427+
for h in header:
428+
for i in range(0, len(indexed_parameter)):
429+
if indexed_parameter[i][h] == indexed_parameter[i - 1][h] and i > 0:
430+
continue
431+
output_file.writerow(
432+
dict(name=h, time=indexed_parameter[i]['time'], value=indexed_parameter[i][h]))
428433

429434
def run(self):
430435
"""Main execution point."""
431436
self.__parameters()
432-
print 'generator parameters ready'
433437
self.__unavailability()
434-
print 'generator unavailability ready'
435-
436438

437439
def main():
438440
"""Main program."""

‎module/profiles_ERNC.py

+8-10
Original file line numberDiff line numberDiff line change
@@ -264,28 +264,26 @@ def __convert_profile_solar(self):
264264
directory = os.path.join(self._ameba_dir, DIR_AMEBA_PROFILE)
265265
check_directory(directory)
266266

267-
names = profile_solar_iter[0].keys()
268-
names.remove('time')
269-
names.remove('scenario')
270-
names.remove('block')
267+
header = profile_solar_iter[0].keys()
268+
header.remove('time')
269+
header.remove('scenario')
270+
header.remove('block')
271271

272272
output_file = writer_csv(FILE_AMEBA_SOLAR, ['name', 'time', 'scenario', 'value'], os.path.join(self._ameba_dir, DIR_AMEBA_PROFILE))
273273
output_file.writeheader()
274274
# REMOVER VALORES REPETIDOS
275-
for name in names:
275+
for h in header:
276276
for i in range(0, len(profile_solar_iter)):
277-
if profile_solar_iter[i][name] == profile_solar_iter[i - 1][name] and i > 0:
277+
if profile_solar_iter[i][h] == profile_solar_iter[i - 1][h] and i > 0:
278278
continue
279279
output_file.writerow(
280-
dict(name=name, time=profile_solar_iter[i]['time'], scenario=profile_solar_iter[i]['scenario'],
281-
value=profile_solar_iter[i][name]))
280+
dict(name=h, time=profile_solar_iter[i]['time'], scenario=profile_solar_iter[i]['scenario'],
281+
value=profile_solar_iter[i][h]))
282282

283283
def run(self):
284284
"""Main execution point."""
285285
self.__convert_profile_wind()
286-
print 'profile wind ready'
287286
self.__convert_profile_solar()
288-
print 'profile solar ready'
289287

290288
def remove_upper(name):
291289
return remove(name).upper()

0 commit comments

Comments
 (0)
Please sign in to comment.