def parseSmallPlant(content):
    filename = 'smallplant.csv'
    header = [
        'plantName',
        'subsystem',
        'stageIndex',
        'genPat1',
        'genPat2',
        'genPat3',
        'gravityCenterLoss',
    ]
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue

        if 'PQ' in line:
            patInfo = []

            for i in range(3):
                patInfo.append(
                    tryGetFromString(line, 24 + i * 5, 29 + i * 5, float))

            result.append([
                tryGetFromString(line, 4, 14),
                tryGetFromString(line, 14, 16, int),
                tryGetFromString(line, 19, 21, int),
                *patInfo,
                tryGetFromString(line, 39, 44, float),
            ])

    return [(filename, header, result)]
def parseSystemLoad(content):
    filename = 'load.csv'
    header = [
        'stageIndex', 'subsystem', 'loadPat1', 'durationPat1', 'loadPat2',
        'durationPat2', 'loadPat3', 'durationPat3', 'loadPat4', 'durationPat4',
        'loadPat5', 'durationPat5'
    ]
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue

        if 'DP' in line:
            patInfo = []

            for i in range(5):
                patInfo.append(
                    tryGetFromString(line, 19 + i * 20, 29 + i * 20, float))
                patInfo.append(
                    tryGetFromString(line, 29 + i * 20, 39 + i * 20, float))

            result.append([
                tryGetFromString(line, 4, 6, int),
                tryGetFromString(line, 9, 11, int), *patInfo
            ])

    return [(filename, header, result)]
Пример #3
0
def parseDisponibilityFactor(content):
    filename = 'dispfactor.csv'
    header = [
        'hydroId', 'dispFactorStage1', 'dispFactorStage2', 'dispFactorStage3',
        'dispFactorStage4', 'dispFactorStage5', 'dispFactorStage6',
        'dispFactorStage7', 'dispFactorStage8'
    ]
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue
        if 'FD' in line:

            patInfo = []
            stageId = 0
            lastInfo = 0

            while lastInfo != -1:
                lastInfo = tryGetFromString(line, 9 + stageId * 5,
                                            14 + stageId * 5, float)

                if stageId == 8:
                    break

                patInfo.append(lastInfo)

                stageId = stageId + 1

            result.append([tryGetFromString(line, 4, 7, int), *patInfo])

    return [(filename, header, result)]
def parseFloodVolume(content):
    filename = 'floodvol.csv'
    header = [
        'hydroId', 'floodVolumeStage1', 'floodVolumeStage2',
        'floodVolumeStage3', 'floodVolumeStage4', 'floodVolumeStage5',
        'floodVolumeStage6', 'floodVolumeStage7', 'floodVolumeStage8',
        'floodVolumeStage9'
    ]
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue
        if 'VE' in line[:3]:

            patInfo = []
            stageId = 0
            lastInfo = 0

            while lastInfo != -1:
                lastInfo = tryGetFromString(line, 9 + stageId * 5,
                                            14 + stageId * 5, float)

                if stageId == 9:
                    break

                patInfo.append(lastInfo)

                stageId = stageId + 1

            result.append([tryGetFromString(line, 4, 7, int), *patInfo])

    return [(filename, header, result)]
Пример #5
0
def parseReservoirVolume(content):
    filename = 'reservoir.csv'
    header = [
        'hydroId', 'ree', 'initialVolume', 'minOutflow', 'hasEvaporation',
        'opStart', 'initialBaseVolume', 'superiorPouringLimit',
        'hydroBalanceEachStage'
    ]
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue

        if 'UH' in line:
            result.append([
                tryGetFromString(line, 4, 7, int),
                tryGetFromString(line, 9, 11, int),
                tryGetFromString(line, 14, 24, float, 0.0),
                tryGetFromString(line, 24, 34, float),
                tryGetFromString(line, 39, 40, int, 0),
                tryGetFromString(line, 44, 46, int, 1),
                tryGetFromString(line, 49, 59, float, 0.0),
                tryGetFromString(line, 59, 69, float, 1e21),
                tryGetFromString(line, 69, 70, int, 0)
            ])
    return [(filename, header, result)]
def parseItaipuRest(content):
    filename = 'itaipuRest.csv'
    header = [
        'stage', 'INDICIDEUSINA', 'subsystem', 'generationItaPat1',
        'loadAndePat1', 'generationItaPat2', 'loadAndePat2',
        'generationItaPat3', 'loadAndePat3'
    ]
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue
        if 'IT' in line:

            result.append([
                tryGetFromString(line, 4, 6, int),
                tryGetFromString(line, 9, 12, int),
                tryGetFromString(line, 14, 16, int),
                tryGetFromString(line, 19, 24, float),
                tryGetFromString(line, 25, 29, float),
                tryGetFromString(line, 30, 34, float),
                tryGetFromString(line, 35, 39, float),
                tryGetFromString(line, 40, 44, float),
                tryGetFromString(line, 45, 49, float)
            ])

    return [(filename, header, result)]
Пример #7
0
def storedEnergyREE(content):
    header = [
        'REE', 'number', 'sis', 'inic', 'sem_01', 'sem_02', 'sem_03', 'sem_04',
        'sem_05', 'deck_date'
    ]
    result = []
    lines = content.splitlines()[1:]
    validy = False
    count = 0
    date = datetime.datetime.strptime(lines[3][98:109],
                                      "%d/%m/%Y").strftime("%Y-%m-%d")

    for line in lines:

        if 'ENERGIA ARMAZENADA NOS REEs' in line:
            validy = True

        if validy == True:
            if 'X-' in line:
                count = count + 1
            else:
                if count == 2:
                    inic = line[28:35].strip()
                    sem1 = line[36:42].strip()
                    sem2 = line[43:49].strip()
                    sem3 = line[50:56].strip()
                    sem4 = line[57:63].strip()
                    sem5 = line[64:70].strip()
                    result.append([
                        tryGetFromString(line, 4, 17),
                        tryGetFromString(line, 18, 22, int),
                        tryGetFromString(line, 23, 27, int),
                        tryGetFromString(line, 28, 35), sem1, sem2, sem3, sem4,
                        sem5, date
                    ])
                elif count == 3:
                    break

    newResult = []
    newResult2 = []

    for data in result:
        newResult.append([x if x != '' else None for x in data])

    for data in newResult:
        newResult2.append([x if x != '-' else None for x in data])

    if len(newResult2) == 0:
        newResult2 = [[
            None, None, None, None, None, None, None, None, None, date
        ]]

    return [(header, newResult2)]
Пример #8
0
def parseTravelTime(content):
    filename = 'traveltime.csv'
    header = ['hydroId', 'travelTime',
            'outflowPastStage1', 'outflowPastStage2',
            'outflowPastStage3', 'outflowPastStage4',
            'outflowPastStage5', 'outflowPastStage6']
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue
        if 'VI' in line[:2]:

            result.append([
                tryGetFromString(line, 4, 7, int),
                tryGetFromString(line, 9, 12),
                tryGetFromString(line, 14, 19, float),
                tryGetFromString(line, 20, 24, float),
                tryGetFromString(line, 25, 29, float),
                tryGetFromString(line, 30, 34, float),
                tryGetFromString(line, 35, 39, float),
                tryGetFromString(line, 40, 44, float)
            ])

    return [(filename, header, result)]
def parsePumpingStation(content):
    filename = 'pumpingStation.csv'
    header = [
        'station', 'subsystem', 'stationName', 'hydroUpstream',
        'hydroDownstream', 'minFlow', 'maxFlow', 'consumptionRate'
    ]
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue

        if 'UE' in line:
            patInfo = []

            result.append([
                tryGetFromString(line, 4, 7, int),
                tryGetFromString(line, 9, 11, int),
                tryGetFromString(line, 14, 26),
                tryGetFromString(line, 29, 32, int),
                tryGetFromString(line, 34, 37, int),
                tryGetFromString(line, 39, 49, float),
                tryGetFromString(line, 50, 59, float),
                tryGetFromString(line, 60, 69, float)
            ])

    return [(filename, header, result)]
Пример #10
0
def parseTotalIteration(content):
    result = {}
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue

        if 'NI' in line:
            result['totalIterations'] = tryGetFromString(
                line, 4, 7, float, 10.0)
            result['maximumIteration'] = tryGetFromString(line, 8, 9, int,
                                                          0) == 0

    return result
def storedEnergySubsytem(content):
    header = [
        'subsystem', 'number', 'inic', 'sem_01', 'sem_02', 'sem_03', 'sem_04',
        'sem_05', 'sem_06', 'deck_date'
    ]
    result = []
    lines = content.splitlines()[1:]
    validy = False
    count = 0
    date = datetime.datetime.strptime(lines[3][98:109],
                                      "%d/%m/%Y").strftime("%Y-%m-%d")

    for line in lines:

        if 'ENERGIA ARMAZENADA NOS SUBSISTEMAS' in line:
            validy = True

        if validy == True:
            if 'X-' in line:
                count = count + 1
            else:
                if count == 2:
                    sem1 = line[30:36].strip()
                    sem2 = line[37:43].strip()
                    sem3 = line[44:50].strip()
                    sem4 = line[51:57].strip()
                    sem5 = line[58:64].strip()
                    sem6 = line[65:71].strip()
                    result.append([
                        tryGetFromString(line, 4, 16),
                        tryGetFromString(line, 17, 21),
                        tryGetFromString(line, 22, 29), sem1, sem2, sem3, sem4,
                        sem5, sem6, date
                    ])
                elif count == 3:
                    break

    newResult = []

    for data in result:
        newResult.append([x if x != '' else None for x in data])

    if len(newResult) == 0:
        newResult = [[
            None, None, None, None, None, None, None, None, None, date
        ]]

    return [(header, newResult)]
Пример #12
0
def parseFillRate(content):
    filename = 'fillRate.csv'
    header = ['hydroelectric', 'subsystem']
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue
        if 'VM' in line:

            result.append([
                tryGetFromString(line, 4, 7, int),
                tryGetFromString(line, 9, 11, float),
            ])

    return [(filename, header, result)]
Пример #13
0
def parseIrrigRate(content):
    filename = 'irrigRate.csv'
    header = [
        'hidroId', 'divertedFlow1', 'divertedFlow2', 'divertedFlow3',
        'divertedFlow4', 'divertedFlow5', 'divertedFlow6'
    ]
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue

        if 'TI' in line:
            patInfo = []

            result.append([
                tryGetFromString(line, 5, 7, int),
                tryGetFromString(line, 8, 14, float),
                tryGetFromString(line, 15, 19, float),
                tryGetFromString(line, 20, 24, float),
                tryGetFromString(line, 25, 29, float),
                tryGetFromString(line, 30, 34, float),
                tryGetFromString(line, 35, 39, float)
            ])

    return [(filename, header, result)]
def parseHistoricOutflow(content):
    filename = 'historicOutflow.csv'
    header = [
        'reservatoryId', 'minFlow1',
        'minFlow2', 'minFlow3',
        'minFlow4', 'minFlow5',
        'minFlow6'
    ]
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue

        if 'RQ' in line:
            patInfo = []

            
            result.append([
                tryGetFromString(line, 5, 7, int),
                tryGetFromString(line, 8, 14, float),
                tryGetFromString(line, 15, 19, float),
                tryGetFromString(line, 20, 24, float),
                tryGetFromString(line, 25, 29, float),
                tryGetFromString(line, 30, 34, float),
                tryGetFromString(line, 35, 39, float)
            ])

    return [(filename, header, result)]
Пример #15
0
def parseSpecialBasins(content):
    filename = 'specialBasins.csv'
    header = [
        'name', 'subsystem',
        'stage', 'generationPat1',
        'generationPat2', 'generationPat3',
        'gravityLost'
    ]
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue

        if 'BE' in line:
            patInfo = []

            
            result.append([
                tryGetFromString(line, 4, 14),
                tryGetFromString(line, 14, 16, int),
                tryGetFromString(line, 19, 21, int),
                tryGetFromString(line, 24, 29, float),
                tryGetFromString(line, 30, 34, float),
                tryGetFromString(line, 35, 39, float),
                tryGetFromString(line, 40, 44, float)
            ])

    return [(filename, header, result)]
Пример #16
0
def parseOpRev(content):
    filename = 'opRev.csv'
    header = ['mnemonico', 'inicialStage', 'finalStage']
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue
        if 'RV' in line:

            result.append([
                tryGetFromString(line, 4, 11),
                tryGetFromString(line, 14, 15, int),
                tryGetFromString(line, 19, 20, int)
            ])

    return [(filename, header, result)]
Пример #17
0
def parseIntervalMonth(content):
    filename = 'intervalMonth.csv'
    header = ['month', 'week']
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue

        if 'GS' in line:
            patInfo = []

            result.append([
                tryGetFromString(line, 4, 6, int),
                tryGetFromString(line, 9, 10, int)
            ])

    return [(filename, header, result)]
def usefulVolReservoirs(content):
    header = [
        'number', 'name', 'inic', 'sem_01', 'sem_02', 'sem_03', 'sem_04',
        'sem_05', 'deck_date'
    ]
    result = []
    lines = content.splitlines()[1:]
    validy = False
    count = 0
    date = datetime.datetime.strptime(lines[3][98:109],
                                      "%d/%m/%Y").strftime("%Y-%m-%d")

    for line in lines:

        if 'VOLUME UTIL DOS RESERVATORIOS' in line:
            validy = True

        if validy == True:
            if 'X-' in line:
                count = count + 1
            else:
                if count == 2:
                    sem1 = line[30:36].strip()
                    sem2 = line[37:43].strip()
                    sem3 = line[44:50].strip()
                    sem4 = line[51:57].strip()
                    sem5 = line[58:65].strip()
                    result.append([
                        tryGetFromString(line, 4, 8, int),
                        tryGetFromString(line, 9, 21),
                        tryGetFromString(line, 22, 29, float), sem1, sem2,
                        sem3, sem4, sem5, date
                    ])
                elif count == 3:
                    break

    newResult = []

    for data in result:
        newResult.append([x if x != '' else None for x in data])

    return [(header, newResult)]
def parseStoredEnergy(content):
    filename = 'storedEnergy.csv'
    header = ['hidroId', 'usefulVolume']
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue

        if 'EZ' in line:
            patInfo = []

            
            result.append([
                tryGetFromString(line, 4, 7, int),
                tryGetFromString(line, 9, 14, float)
            ])

    return [(filename, header, result)]
def marginalCost(content):
    header = [
        'ssis', 'sem_01',
        'sem_02', 'sem_03',
        'sem_04', 'sem_05',
        'deck_date'
    ]
    result = []
    lines = content.splitlines()[1:]
    validy = False
    count = 0
    date = datetime.datetime.strptime(lines[3][98:109], "%d/%m/%Y").strftime("%Y-%m-%d")

    for line in lines:
        if 'CUSTO MARGINAL DE OPERACAO' in line:
            validy = True

        if validy == True:
            if 'X-' in line:
                count = count + 1
            else:
                if count == 2:
                    sem1 = line[11:21].strip()
                    sem2 = line[22:32].strip()
                    sem3 = line[33:43].strip()
                    sem4 = line[44:54].strip()
                    sem5 = line[55:65].strip()
                    result.append([
                        tryGetFromString(line, 4, 10),
                        sem1,
                        sem2,
                        sem3,
                        sem4,
                        sem5,
                        date
                    ])
                elif count == 3:
                    break      

    newResult = []

    for data in result:
        newResult.append([x if x != '' else None for x in data])

    #Logic for Pat with Region
    i = 3
    for trash in range(5):
        ssis = newResult[i][0][3:]
        for c in range(3):
            elementOne = newResult[i - c - 1][0] + ssis            
            newResult[i - c - 1][0] = elementOne
        i += 4
    
    return [(header, newResult)]
def parseAnticipationLag(content):
    filename = 'anticipationLag.csv'
    header = ['thermalId', 'subsystem', 'dispatchAnticipationLag']
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue

        if 'NL' in line:
            patInfo = []

            result.append([
                tryGetFromString(line, 4, 7, int),
                tryGetFromString(line, 9, 11, int),
                tryGetFromString(line, 14, 15, int)
            ])

    return [(filename, header, result)]
def parseFutureCostDef(content):
    filename = 'futureCostDef.csv'
    header = ['mnemonico', 'mnemonicoOption', 'scenarioPrinted']
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue

        if 'IR' in line:
            patInfo = []

            result.append([
                tryGetFromString(line, 4, 11),
                tryGetFromString(line, 14, 16, int),
                tryGetFromString(line, 19, 21, int)
            ])

    return [(filename, header, result)]
Пример #23
0
def parseDiscountRate(content):
    result = {}
    lines = content.splitlines()[1:]
    for line in lines:
        if '&' in line or line.strip() == '':
            continue

        if 'TX' in line:
            result['discountRate'] = tryGetFromString(line, 4, 9, float, 10.0)

    return result
Пример #24
0
def exchangeFlow(content):
    header = [
        'interc', 'pat', 'sem_01', 'sem_02', 'sem_03', 'sem_04', 'sem_05',
        'deck_date'
    ]
    result = []
    lines = content.splitlines()[1:]
    validy = False
    count = 0
    date = datetime.datetime.strptime(lines[3][98:109],
                                      "%d/%m/%Y").strftime("%Y-%m-%d")

    for line in lines:

        if 'FLUXO NOS INTERCAMBIOS' in line:
            validy = True

        if validy == True:
            if 'X-' in line:
                count = count + 1
            else:
                if count == 2:
                    sem1 = line[18:28].strip()
                    sem2 = line[29:39].strip()
                    sem3 = line[40:50].strip()
                    sem4 = line[51:61].strip()
                    sem5 = line[62:73].strip()
                    result.append([
                        tryGetFromString(line, 4, 10),
                        tryGetFromString(line, 11, 17), sem1, sem2, sem3, sem4,
                        sem5, date
                    ])
                elif count == 3:
                    break

    newResult = []

    for data in result:
        newResult.append([x if x != '' else None for x in data])

    return [(header, newResult)]
def parseExchangeLimits(content):
    filename = 'exchangelimit.csv'
    header = [
        'stageIndex', 'fromSubsystem', 'toSubsystem', 'usePenalty',
        'limitFromToPat1', 'limitToFromPat1',
        'limitFromToPat2', 'limitToFromPat2',
        'limitFromToPat3', 'limitToFromPat3',
        'limitFromToPat4', 'limitToFromPat4',
        'limitFromToPat5', 'limitToFromPat5',
    ]
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue

        if 'IA' in line:
            patInfo = []

            for i in range(5):
                patInfo.append(tryGetFromString(
                    line, 19 + i*20, 29 + i*20, float))
                patInfo.append(tryGetFromString(
                    line, 29 + i*20, 39 + i*20, float))

            result.append([
                tryGetFromString(line, 4, 6, int),
                tryGetFromString(line, 9, 11),
                tryGetFromString(line, 14, 16),
                tryGetFromString(line, 17, 18, int, 0),
                *patInfo
            ])

    return [(filename, header, result)]
def getInfo(line, pat, date):
    result.append([
        tryGetFromString(line, 4, 8, int),
        tryGetFromString(line, 9, 21),
        tryGetFromString(line, 22, 29, float),
        tryGetFromString(line, 30, 37, float),
        tryGetFromString(line, 38, 45, float),
        tryGetFromString(line, 46, 53, float),
        tryGetFromString(line, 54, 61, float), pat, date
    ])
    return result
Пример #27
0
def parseConvergenceTol(content):
    result = {}
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue

        if 'GP' in line:
            result['convergenceTolerance'] = tryGetFromString(
                line, 4, 14, float, 0.001)

    return result
def parsePlAlgo(content):
    filename = 'plAlgo.csv'
    header = ['mnemonico']
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue
        if 'PD' in line:

            result.append([tryGetFromString(line, 4, 10)])

    return [(filename, header, result)]
Пример #29
0
def parseMaintenanceThermal(content):
    filename = 'maintthermal.csv'
    header = ['thermalId', 'subsystem']
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue
        if 'MT' in line:

            patInfo = []
            stageId = 0
            lastInfo = 0

            while lastInfo != -1:
                lastInfo = tryGetFromString(line, 14 + stageId * 5,
                                            19 + stageId * 5, float, -1)

                if lastInfo == -1:
                    break

                patInfo.append(lastInfo)

                stageId = stageId + 1

            result.append([
                tryGetFromString(line, 4, 7, int),
                tryGetFromString(line, 9, 11, int), *patInfo
            ])

    if len(result) != 0:
        for i in range(len(result[0]) - 2):
            header.append('maintFactorStage{}'.format(i + 1))

    return [(filename, header, result)]
Пример #30
0
def parseStairRestrictions(content):
    filename = 'stairRestrictions.csv'
    header = ['mnemonico']
    result = []
    lines = content.splitlines()[1:]

    for line in lines:
        if '&' in line or line.strip() == '':
            continue

        if 'RC' in line:
            patInfo = []

            result.append([tryGetFromString(line, 4, 10)])

    return [(filename, header, result)]