Пример #1
0
def rodar(patterns, metodos, radical, sinais, occupancy, lock):
    u = Utiliters()
    info = u.setup_logger('information', radical + 'info.log')
    startedI = datetime.datetime.now()
    print('Started Nu Test with occupancy %d at %s' % (occupancy, startedI.strftime("%H:%M:%S %d/%m/%Y")))
    info.info('Started Nu Test with occupancy %d' % occupancy)
    algo = Algorithms()
    matrizes = Matrizes()
    matrix = matrizes.matrix()
    samples = 1820
    iterations = 331

    for pattern in patterns:
        nome = radical + pattern + '_' + str(occupancy)
        bunch = pattern.rsplit('b', 1)
        empty = bunch[1].rsplit('e', 1)
        b = int(bunch[0])
        e = int(empty[0])
        halfA = e - int(math.ceil(e / 2))
        fillAd = np.zeros(halfA)
        fillAe = np.zeros(e - halfA)
        try:
            signalT = np.genfromtxt(sinais + 'signalT_' + pattern + '_' + str(occupancy) + '.csv', delimiter=',')
            signalN = np.genfromtxt(sinais + 'signalN_' + pattern + '_' + str(occupancy) + '.csv', delimiter=',')
        except:
            print('Error get saved signals')
            signalT, signalN, signalTf, signalNf = u.sgen(pattern, samples, b, fillAd, fillAe, matrix, sinais)

        const = {'iterations': iterations, 'occupancy': occupancy, 'pattern': pattern, 'signalT': signalT,
                 'signalN': signalN}

        itens = np.arange(0)
        constantes = {}
        for i in range(1, 101):
            for j in range(1, 101):
                if i != j:
                    aux = float('%.6g' % (i / j))
                    if not (aux in itens):
                        itens = np.append(itens, aux)
                        constantes.update({aux: str(i) + '#' + str(j)})

        colunas = ['Nu', 'i', 'j']
        for metodo in metodos:
            colunas.append(metodo + ':' + str(occupancy) + ':RMS')
        data = panda.DataFrame([], columns=colunas)
        for nu in itens:
            opt = {'nu': nu, 'mi': .25}
            row = [nu]
            row.extend(constantes.get(nu).split('#'))
            for metodo in metodos:
                const['metodo'] = metodo
                row.append(algo.getRMSfloat(const, opt)['rms'])
            l = len(data)
            data.loc[l] = row
            with lock:
                data.to_csv(nome + '.csv', index=False)
    ended = datetime.datetime.now()
    print('Ended Nu Test with occupancy %d at  %s after %s' % (
        occupancy, ended.strftime("%H:%M:%S %d/%m/%Y"), u.totalTime(startedI)))
    info.info('Ended Nu Test with occupancy %d after %s' % (occupancy, u.totalTime(startedI)))
Пример #2
0
def rodar(patterns, metodos, conf, radical, sinais, occupancy, lock):
    u = Utiliters()
    info = u.setup_logger('information', radical + 'info.log')
    startedI = datetime.datetime.now()
    print('Started Lambda Test with occupancy %d at %s' %
          (occupancy, startedI.strftime("%H:%M:%S %d/%m/%Y")))
    info.info('Started Lambda Test with occupancy %d' % occupancy)
    algo = Algorithms()
    matrizes = Matrizes()
    matrix = matrizes.matrix()
    samples = 1820
    iterations = conf['iterations']

    for pattern in patterns:
        nome = radical + pattern + '_' + str(occupancy)
        bunch = pattern.rsplit('b', 1)
        empty = bunch[1].rsplit('e', 1)
        b = int(bunch[0])
        e = int(empty[0])
        halfA = e - int(math.ceil(e / 2))
        fillAd = np.zeros(halfA)
        fillAe = np.zeros(e - halfA)
        try:
            signalT = np.genfromtxt(sinais + 'signalT_' + pattern + '_' +
                                    str(occupancy) + '.csv',
                                    delimiter=',')
            signalN = np.genfromtxt(sinais + 'signalN_' + pattern + '_' +
                                    str(occupancy) + '.csv',
                                    delimiter=',')
        except:
            print('Error get saved signals')
            signalT, signalN, signalTf, signalNf = u.sgen(
                pattern, samples, b, fillAd, fillAe, matrix, sinais)

        const = {
            'iterations': iterations,
            'occupancy': occupancy,
            'pattern': pattern,
            'signalT': signalT,
            'signalN': signalN
        }

        colunas = ['Lambda']
        for metodo in metodos:
            for ite in range(1, iterations):
                colunas.append(metodo + ':' + str(occupancy) + ':RMS:' +
                               str(ite))

        data = panda.DataFrame([], columns=colunas)
        for lam in range(conf['sL'], conf['eL']):
            if lam != 0:
                lamb = lam / 10
            else:
                lamb = 0
            opt = {'lambda': lamb}
            row = [lamb]
            for metodo in metodos:
                const['metodo'] = metodo
                for ite in range(1, iterations):
                    const['iterations'] = ite
                    row.append(algo.getRMSfloat(const, opt)['rms'])
            l = len(data)
            data.loc[l] = row
            with lock:
                data.to_csv(nome + '.csv', index=False)
    ended = datetime.datetime.now()
    print('Ended Lambda Test with occupancy %d at  %s after %s' %
          (occupancy, ended.strftime("%H:%M:%S %d/%m/%Y"),
           u.totalTime(startedI)))
    info.info('Ended Lambda Test with occupancy %d after %s' %
              (occupancy, u.totalTime(startedI)))
Пример #3
0
    conf = {'sL': -2, 'eL': 2, 'iterations': iterations}
    print('Start Simulations at ' + startedAll.strftime("%H:%M:%S %d/%m/%Y"))
    patterns = ['48b7e']
    #patterns = ['48b7e', '8b4e']
    sinais = './../tests/signals/'
    simulations = Simulations()
    timestr = time.strftime("%Y%m%d-%H%M%S")
    radical = './../results/lambda_result_' + timestr + '_'

    open(radical + 'info.log', 'w').close()
    open(radical + 'erro.log', 'w').close()
    info = u.setup_logger('information', radical + 'info.log')
    erro = u.setup_logger('', radical + 'erro.log', logging.WARNING)
    info.info('Start lambda generation')
    try:
        simulations.multiProcessSimulation(metodos, conf, radical, sinais)
    except:
        erro.exception('Logging a caught exception')
    # g = Graficos()
    # for pattern in patterns:
    #     file = radical + pattern + '_'
    #     # file = './../results/lambda_result_'
    #     g.graphConst3d(metodos, occupancies, constX3d='Lambda', constX2d=chr(955), file=file, show=True,
    #                    nome='./../graphics/results/', mark=True)

    endedQuantization = datetime.datetime.now()
    print('Ended Simulation at %s after %s\n' %
          (endedQuantization.strftime("%H:%M:%S %d/%m/%Y"),
           u.totalTime(startedAll)))
    info.info('Ended Simulation after %s' % (u.totalTime(startedAll)))
Пример #4
0
def rodar(patterns, radical, sinais, occupancy, lock, metodos, load=None):
    u = Utiliters()
    info = u.setup_logger('information', radical + 'info.log')
    startedI = datetime.now()
    print('Started ROC generate for occupancy %d at  %s' %
          (occupancy, startedI.strftime("%H:%M:%S %d/%m/%Y")))
    info.info('Started ROC generate for occupancy %d' % (occupancy))
    algo = Algorithms()
    gerador = Signal()
    matrizes = Matrizes()
    matrix = matrizes.matrix()
    samples = 1820

    for pattern in patterns:
        if load is None:
            data = panda.DataFrame([])
            nome = radical + pattern + '_' + str(occupancy) + '.csv'
        else:
            nome = load + pattern + '_' + str(occupancy) + '.csv'
            data = panda.read_csv(nome)

        bunch = pattern.rsplit('b', 1)
        empty = bunch[1].rsplit('e', 1)
        b = int(bunch[0])
        e = int(empty[0])
        bwindow = b + 6
        window = b + e
        halfA = e - int(math.ceil(e / 2))
        halfCd = int(math.ceil((bwindow - window) / 2))
        halfCe = int(bwindow - window - halfCd)
        if halfCd > 0:
            fillCd = np.zeros(halfCd)
        else:
            fillCd = np.arange(0)
        if halfCe > 0:
            fillCe = np.zeros(halfCe)
        else:
            fillCe = np.arange(0)
        fillAd = np.zeros(halfA)
        fillAe = np.zeros(e - halfA)
        fill = [fillAd, fillAe, fillCd, fillCe]
        H, A, B = matrizes.generate(b)
        h = matrix[0:7, 5]
        try:
            signalT = np.genfromtxt(sinais + 'signalT_' + pattern + '_' +
                                    str(occupancy) + '.csv',
                                    delimiter=',')
            signalN = np.genfromtxt(sinais + 'signalN_' + pattern + '_' +
                                    str(occupancy) + '.csv',
                                    delimiter=',')
            signalTf = np.genfromtxt(sinais + 'fir/signalT_' + pattern + '_' +
                                     str(occupancy) + '.csv',
                                     delimiter=',')
            signalNf = np.genfromtxt(sinais + 'fir/signalN_' + pattern + '_' +
                                     str(occupancy) + '.csv',
                                     delimiter=',')
        except:
            print('Error get saved signals')
            signalT, signalN, signalTf, signalNf = u.sgen(
                pattern, samples, b, fillAd, fillAe, matrix, sinais)
        const = {
            'iterations': 331,
            'occupancy': occupancy,
            'pattern': pattern,
            'signalT': signalT,
            'signalN': signalN
        }
        opt = {'samples': samples}
        nnzST = np.count_nonzero(signalT)
        nzST = len(signalT) - nnzST
        pike = int(np.max(signalN) + 1)

        if ('FDIP' in metodos) or ('MF' in metodos):
            started = datetime.now()
            print('Started ROC generate for old with occupancy %d at  %s' %
                  (occupancy, started.strftime("%H:%M:%S %d/%m/%Y")))
            info.info('Started ROC generate for old with occupancy %d' %
                      (occupancy))
            metodo = 'FDIP'
            if metodo in metodos:
                const['metodo'] = metodo
                constf = const
                constf['signalNf'] = signalNf
                constf['signalTf'] = signalTf
                roc = gerador.roc(algo.getRMSfloat(constf)['signal'], signalT)
                roc = roc.rename(
                    columns={
                        s: metodo + ':' + str(occupancy) + ':' + s
                        for s in list(roc.columns.values)
                    })
                data = panda.concat([data, roc], axis=1, sort=False)
                with lock:
                    data.to_csv(nome, index=False)

            metodo = 'MF'
            if metodo in metodos:
                signalMf, roc = algo.MatchedFw_roc(signalN, h, samples, b, e,
                                                   fill, signalT)
                roc = roc.rename(
                    columns={
                        s: 'MF:' + str(occupancy) + ':' + s
                        for s in list(roc.columns.values)
                    })
                data = panda.concat([data, roc], axis=1, sort=False)
                with lock:
                    data.to_csv(nome, index=False)

            ended = datetime.now()
            print(
                'Ended ROC generate for old with occupancy %d at  %s after %s'
                % (occupancy, ended.strftime("%H:%M:%S %d/%m/%Y"),
                   u.totalTime(started)))
            info.info('Ended ROC generate for old with occupancy %d after %s' %
                      (occupancy, u.totalTime(started)))

        if (' MF ' in metodos) or ('OMP ' in metodos) or ('LS-OMP' in metodos):
            started = datetime.now()
            print('Started ROC generate for Greedy with occupancy %d at  %s' %
                  (occupancy, started.strftime("%H:%M:%S %d/%m/%Y")))
            info.info('Started ROC generate for Greedy with occupancy %d' %
                      (occupancy))

            metodo = ' MP '
            if metodo in metodos:
                threshold, pdr, far = 0, 5, 5
                res = []
                while (float('{:.2f}'.format(pdr)) > 0.01) or (float(
                        '{:.2f}'.format(far)) > 0.01):
                    faA, pdA = 0, 0
                    signalA = np.zeros(window * samples)
                    for i in range(samples):
                        step = (i * window)
                        paso = step + window
                        if (e > 6):
                            paso = paso - (e - 6)
                        signalTw = np.concatenate(
                            (fillCd, signalT[step:paso], fillCe))
                        signalSw = np.concatenate(
                            (fillCd, signalN[step:paso], fillCe))

                        step += halfA
                        paso = step + b

                        x, fa, pd = algo.MP_roc(threshold, signalSw, signalTw,
                                                b, H)
                        signalA[step:paso] = x
                        faA += fa
                        pdA += pd
                    far = (faA / nzST)
                    pdr = (pdA / nnzST)
                    tmp = '%d,%.6f,%.6f,%.6f' % (
                        threshold, gerador.rms(signalA - signalT), far, pdr)
                    if threshold < pike:
                        threshold += 1
                    else:
                        if threshold == pike:
                            threshold = math.ceil(pike / 100) * 100
                        else:
                            threshold += 100
                    res.append([float(s) for s in tmp.split(',')])
                roc = panda.DataFrame(
                    res,
                    columns=[
                        'MP:' + str(occupancy) + ':threshold',
                        'MP:' + str(occupancy) + ':RMS',
                        'MP:' + str(occupancy) + ':FA',
                        'MP:' + str(occupancy) + ':DP'
                    ])

                data = panda.concat([data, roc], axis=1, sort=False)
                with lock:
                    data.to_csv(nome, index=False)

            metodo = 'OMP '
            if metodo in metodos:
                threshold, pdr, far = 0, 5, 5
                res = []
                while (float('{:.2f}'.format(pdr)) > 0.01) or (float(
                        '{:.2f}'.format(far)) > 0.01):
                    faA, pdA = 0, 0
                    signalA = np.zeros(window * samples)
                    for i in range(samples):
                        step = (i * window)
                        paso = step + window
                        if (e > 6):
                            paso = paso - (e - 6)
                        signalTw = np.concatenate(
                            (fillCd, signalT[step:paso], fillCe))
                        signalSw = np.concatenate(
                            (fillCd, signalN[step:paso], fillCe))

                        step += halfA
                        paso = step + b

                        x, fa, pd = algo.OMP_roc(threshold, signalSw, signalTw,
                                                 b, H)
                        signalA[step:paso] = x
                        faA += fa
                        pdA += pd
                    far = (faA / nzST)
                    pdr = (pdA / nnzST)
                    tmp = '%d,%.6f,%.6f,%.6f' % (
                        threshold, gerador.rms(signalA - signalT), far, pdr)
                    if (threshold < pike):
                        threshold += 1
                    else:
                        if threshold == pike:
                            threshold = math.ceil(pike / 100) * 100
                        else:
                            threshold += 100
                    res.append([float(s) for s in tmp.split(',')])
                roc = panda.DataFrame(
                    res,
                    columns=[
                        'OMP:' + str(occupancy) + ':threshold',
                        'OMP:' + str(occupancy) + ':RMS',
                        'OMP:' + str(occupancy) + ':FA',
                        'OMP:' + str(occupancy) + ':DP'
                    ])

                data = panda.concat([data, roc], axis=1, sort=False)
                with lock:
                    data.to_csv(nome, index=False)

            metodo = 'LS-OMP'
            if metodo in metodos:
                threshold, pdr, far = 0, 5, 5
                res = []
                while (float('{:.2f}'.format(pdr)) > 0.01) or (float(
                        '{:.2f}'.format(far)) > 0.01):
                    faA, pdA = 0, 0
                    signalA = np.zeros(window * samples)
                    for i in range(samples):
                        step = (i * window)
                        paso = step + window
                        if (e > 6):
                            paso = paso - (e - 6)
                        signalTw = np.concatenate(
                            (fillCd, signalT[step:paso], fillCe))
                        signalSw = np.concatenate(
                            (fillCd, signalN[step:paso], fillCe))

                        step += halfA
                        paso = step + b

                        x, fa, pd = algo.LS_OMP_roc(threshold, signalSw,
                                                    signalTw, b, H)
                        signalA[step:paso] = x
                        faA += fa
                        pdA += pd
                    far = (faA / nzST)
                    pdr = (pdA / nnzST)
                    tmp = '%d,%.6f,%.6f,%.6f' % (
                        threshold, gerador.rms(signalA - signalT), far, pdr)
                    if (threshold < pike):
                        threshold += 1
                    else:
                        if threshold == pike:
                            threshold = math.ceil(pike / 100) * 100
                        else:
                            threshold += 100
                    res.append([float(s) for s in tmp.split(',')])
                roc = panda.DataFrame(
                    res,
                    columns=[
                        'LS-OMP:' + str(occupancy) + ':threshold',
                        'LS-OMP:' + str(occupancy) + ':RMS',
                        'LS-OMP:' + str(occupancy) + ':FA',
                        'LS-OMP:' + str(occupancy) + ':DP'
                    ])
                data = panda.concat([data, roc], axis=1, sort=False)
                with lock:
                    data.to_csv(nome, index=False)

            ended = datetime.now()
            print(
                'Ended ROC generate for Greedy with occupancy %d at  %s after %s'
                % (occupancy, ended.strftime("%H:%M:%S %d/%m/%Y"),
                   u.totalTime(started)))
            info.info(
                'Ended ROC generate for Greedy with occupancy %d after %s' %
                (occupancy, u.totalTime(started)))

        started = datetime.now()
        print('Started ROC generate for Shrinkage with occupancy %d at  %s' %
              (occupancy, started.strftime("%H:%M:%S %d/%m/%Y")))
        info.info('Started ROC generate for Shrinkage with occupancy %d' %
                  (occupancy))

        metodo = 'DS'
        if metodo in metodos:
            const['metodo'] = metodo
            roc = gerador.roc(algo.getRMSfloat(const, opt)['signal'], signalT)
            roc = roc.rename(
                columns={
                    s: metodo + ':' + str(occupancy) + ':' + s
                    for s in list(roc.columns.values)
                })
            data = panda.concat([data, roc], axis=1, sort=False)
            with lock:
                data.to_csv(nome, index=False)

        metodo = 'GD '
        if metodo in metodos:
            metodo = metodo.strip()
            const['metodo'] = metodo
            roc = gerador.roc(algo.getRMSfloat(const, opt)['signal'], signalT)
            roc = roc.rename(
                columns={
                    s: metodo + ':' + str(occupancy) + ':' + s
                    for s in list(roc.columns.values)
                })
            data = panda.concat([data, roc], axis=1, sort=False)
            with lock:
                data.to_csv(nome, index=False)

        metodo = 'GDi'
        if metodo in metodos:
            metodo = metodo.strip()
            const['metodo'] = metodo
            roc = gerador.roc(algo.getRMSfloat(const, opt)['signal'], signalT)
            roc = roc.rename(
                columns={
                    s: metodo + ':' + str(occupancy) + ':' + s
                    for s in list(roc.columns.values)
                })
            data = panda.concat([data, roc], axis=1, sort=False)
            with lock:
                data.to_csv(nome, index=False)

        metodo = 'SSF '
        if metodo in metodos:
            metodo = metodo.strip()
            const['metodo'] = metodo
            opt['mi'] = .25
            roc = gerador.roc(algo.getRMSfloat(const, opt)['signal'], signalT)
            roc = roc.rename(
                columns={
                    s: metodo + ':' + str(occupancy) + ':' + s
                    for s in list(roc.columns.values)
                })
            data = panda.concat([data, roc], axis=1, sort=False)
            with lock:
                data.to_csv(nome, index=False)

        metodo = 'SSFi'
        if metodo in metodos:
            metodo = metodo.strip()
            const['metodo'] = metodo
            opt['mi'] = .25
            roc = gerador.roc(algo.getRMSfloat(const, opt)['signal'], signalT)
            roc = roc.rename(
                columns={
                    s: metodo + ':' + str(occupancy) + ':' + s
                    for s in list(roc.columns.values)
                })
            data = panda.concat([data, roc], axis=1, sort=False)
            with lock:
                data.to_csv(nome, index=False)

        metodo = 'SSFls '
        if metodo in metodos:
            metodo = metodo.strip()
            const['metodo'] = metodo
            opt['mi'] = .25
            roc = gerador.roc(algo.getRMSfloat(const, opt)['signal'], signalT)
            roc = roc.rename(
                columns={
                    s: metodo + ':' + str(occupancy) + ':' + s
                    for s in list(roc.columns.values)
                })
            data = panda.concat([data, roc], axis=1, sort=False)
            with lock:
                data.to_csv(nome, index=False)

        metodo = 'SSFlsi'
        if metodo in metodos:
            metodo = metodo.strip()
            const['metodo'] = metodo
            opt['mi'] = .25
            roc = gerador.roc(algo.getRMSfloat(const, opt)['signal'], signalT)
            roc = roc.rename(
                columns={
                    s: metodo + ':' + str(occupancy) + ':' + s
                    for s in list(roc.columns.values)
                })
            data = panda.concat([data, roc], axis=1, sort=False)
            with lock:
                data.to_csv(nome, index=False)

        metodo = 'SSFlsc '
        if metodo in metodos:
            metodo = metodo.strip()
            const['metodo'] = metodo
            opt['mi'] = .25
            roc = gerador.roc(algo.getRMSfloat(const, opt)['signal'], signalT)
            roc = roc.rename(
                columns={
                    s: metodo + ':' + str(occupancy) + ':' + s
                    for s in list(roc.columns.values)
                })
            data = panda.concat([data, roc], axis=1, sort=False)
            with lock:
                data.to_csv(nome, index=False)

        metodo = 'SSFlsci'
        if metodo in metodos:
            metodo = metodo.strip()
            const['metodo'] = metodo
            opt['mi'] = .25
            roc = gerador.roc(algo.getRMSfloat(const, opt)['signal'], signalT)
            roc = roc.rename(
                columns={
                    s: metodo + ':' + str(occupancy) + ':' + s
                    for s in list(roc.columns.values)
                })
            data = panda.concat([data, roc], axis=1, sort=False)
            with lock:
                data.to_csv(nome, index=False)

        metodo = 'PCD '
        if metodo in metodos:
            metodo = metodo.strip()
            const['metodo'] = metodo
            opt['mi'] = math.inf
            roc = gerador.roc(algo.getRMSfloat(const, opt)['signal'], signalT)
            roc = roc.rename(
                columns={
                    s: metodo + ':' + str(occupancy) + ':' + s
                    for s in list(roc.columns.values)
                })
            data = panda.concat([data, roc], axis=1, sort=False)
            with lock:
                data.to_csv(nome, index=False)

        metodo = 'PCDi'
        if metodo in metodos:
            metodo = metodo.strip()
            const['metodo'] = metodo
            opt['mi'] = math.inf
            roc = gerador.roc(algo.getRMSfloat(const, opt)['signal'], signalT)
            roc = roc.rename(
                columns={
                    s: metodo + ':' + str(occupancy) + ':' + s
                    for s in list(roc.columns.values)
                })
            data = panda.concat([data, roc], axis=1, sort=False)
            with lock:
                data.to_csv(nome, index=False)

        ended = datetime.now()
        print(
            'Ended ROC generate for Shrinkage with occupancy %d at  %s after %s'
            % (occupancy, ended.strftime("%H:%M:%S %d/%m/%Y"),
               u.totalTime(started)))
        info.info(
            'Ended ROC generate for Shrinkage with occupancy %d after %s' %
            (occupancy, u.totalTime(started)))
    ended = datetime.now()
    print('Ended ROC generate for occupancy %d at  %s after %s' %
          (occupancy, ended.strftime("%H:%M:%S %d/%m/%Y"),
           u.totalTime(startedI)))
    info.info('Ended ROC generate for occupancy %d after %s' %
              (occupancy, u.totalTime(startedI)))
Пример #5
0
def withoutInitial(const, radical, path, quantization, lock):
    u = Utiliters()
    occupancy = 30
    samples = 1820
    pattern = '48b7e'
    info = u.setup_logger('information', radical + 'info.log')
    startedI = datetime.datetime.now()
    print('Started Quantization Test, for quant %d at %s' % (quantization, startedI.strftime("%H:%M:%S %d/%m/%Y")))
    info.info('Started Quantization Test, for quant %d' % quantization)
    gerador = Signal()
    matrizes = Matrizes()
    verilog = XbYe()

    algov = verilog.getAlgo([pattern])
    bunch = pattern.rsplit('b', 1)
    empty = bunch[1].rsplit('e', 1)
    b = int(bunch[0])
    e = int(empty[0])
    u = Utiliters()
    bwindow = b + 6
    window = b + e
    halfA = e - int(math.ceil(e / 2))
    halfCd = int(math.ceil((bwindow - window) / 2))
    halfCe = int(bwindow - window - halfCd)
    fillAd = np.zeros(halfA)
    fillAe = np.zeros(e - halfA)
    if halfCd > 0:
        fillCd = np.zeros(halfCd)
    else:
        fillCd = np.arange(0)
    if halfCe > 0:
        fillCe = np.zeros(halfCe)
    else:
        fillCe = np.arange(0)
    matrix = matrizes.matrix()
    nome = radical + pattern + '_' + str(occupancy)

    bitsH = quantization
    bitsA = bitsH + 5
    align = bitsA
    mh, ma, mb = matrizes.generateFix(bitsH, bitsA)

    try:
        signalT = np.genfromtxt(path + 'signalT_' + pattern + '_' + str(occupancy) + '.csv', delimiter=',')
        signalN = np.genfromtxt(path + 'signalN_' + pattern + '_' + str(occupancy) + '.csv', delimiter=',')
    except:
        print('Error get saved signals')
        signalT, signalN, signalTf, signalNf = u.sgen(pattern, samples, b, fillAd, fillAe, matrix, path)

    for block in range(const['sB'], const['eB']):
        iterations = block * window
        for gain in range(const['sG'], const['eG']):
            bits = gain + 10
            signalA = np.zeros(window * samples)
            for ite in range(samples):
                step = (ite * window)
                paso = step + window
                if (e > 6):
                    paso = paso - (e - 6)
                signalS = np.concatenate((fillCd, signalN[step:paso], fillCe))
                step += halfA
                paso = step + b

                Hs, x = algov.sipo(signalS, gain, mh)
                x = algov.SSF([x, Hs, ma, iterations, bits, align, .25, 0])
                x = np.where(x < 0, 0, x)
                signalA[step:paso] = np.fix(np.divide(x, pow(2, gain)))
            rms = gerador.rms(signalA - signalT)

            with lock:
                with open(nome + '.csv', 'a') as file:
                    file.write(str(iterations) + u.s(quantization) + u.s(gain) + u.s(rms) + '\n')

    ended = datetime.datetime.now()
    print('Ended Quantization Test, for pseudoGain %d at %s after %s' % (
        quantization, ended.strftime("%H:%M:%S %d/%m/%Y"), u.totalTime(startedI)))
    info.info('Ended Quantization Test, for pseudoGain %d after %s' % (quantization, u.totalTime(startedI)))
Пример #6
0
    # const = {'sG': 5, 'eG': 7, 'sQ': 5, 'eQ': 6, 'sB': 1, 'eB': 2}
    pattern = '48b7e'
    path = './../tests/signals/'
    simulations = Simulations()
    timestr = time.strftime("%Y%m%d-%H%M%S")
    radical = './../results/testVerilogQuantization_' + timestr + '_'

    open(radical + 'info.log', 'w').close()
    open(radical + 'erro.log', 'w').close()
    info = u.setup_logger('information', radical + 'info.log')
    erro = u.setup_logger('', radical + 'erro.log', logging.WARNING)
    info.info('Start Quantization generation')
    try:
        if ssf:
            nome = radical + pattern + '_' + str(occupancy)
            with open(nome + '.csv', 'w') as file:
                file.write('Iterations,quant,gain,SSF:RMS:'+str(occupancy)+'\n')
            simulations.multiProcessSimulation(const, radical, path, initial=False)
        if ssfi:
            nome = radical + pattern + '_i_' + str(occupancy)
            with open(nome + '.csv', 'w') as file:
                file.write('Iterations,quant,gain,pseudo,SSFi:RMS:'+str(occupancy)+'\n')
            simulations.multiProcessSimulation(const, radical, path, initial=True)
    except:
        erro.exception('Logging a caught exception')

    endedQuantization = datetime.datetime.now()
    print('Ended Quantization Simulation at %s after %s\n' % (
    endedQuantization.strftime("%H:%M:%S %d/%m/%Y"), u.totalTime(startedAll)))
    info.info('Ended Quantization Simulation after %s' % (u.totalTime(startedAll)))
Пример #7
0
def rodar(patterns, metodos, radical, sinais, occupancy, lock):
    u = Utiliters()
    info = u.setup_logger('information', radical + 'info.log')
    startedI = datetime.datetime.now()
    print('Started Mi full Test with occupancy %d at %s' %
          (occupancy, startedI.strftime("%H:%M:%S %d/%m/%Y")))
    info.info('Started Mi full Test with occupancy %d' % occupancy)
    algo = Algorithms()
    matrizes = Matrizes()
    samples = 1820
    iterations = 331

    for pattern in patterns:
        nome = radical + pattern + '_' + str(occupancy)
        bunch = pattern.rsplit('b', 1)
        empty = bunch[1].rsplit('e', 1)
        b = int(bunch[0])
        e = int(empty[0])
        u = Utiliters()
        bwindow = b + 6
        window = b + e
        halfA = e - int(math.ceil(e / 2))
        halfCd = int(math.ceil((bwindow - window) / 2))
        halfCe = int(bwindow - window - halfCd)
        fillAd = np.zeros(halfA)
        fillAe = np.zeros(e - halfA)
        if halfCd > 0:
            fillCd = np.zeros(halfCd)
        else:
            fillCd = np.arange(0)
        if halfCe > 0:
            fillCe = np.zeros(halfCe)
        else:
            fillCe = np.arange(0)
        H, A, B = matrizes.generate(b)
        matrix = matrizes.matrix()
        try:
            signalN = np.genfromtxt(sinais + 'signalN_' + pattern + '_' +
                                    str(occupancy) + '.csv',
                                    delimiter=',')
        except:
            print('Error get saved signals')
            signalT, signalN, signalTf, signalNf = u.sgen(
                pattern, samples, b, fillAd, fillAe, matrix, sinais)

        colunas = ['Window']
        for metodo in metodos:
            for ite in range(1, iterations):
                colunas.append(metodo + ':' + str(occupancy) + ':mu:' +
                               str(ite))
        data = panda.DataFrame([], columns=colunas)

        for its in range(samples):
            step = (its * window)
            paso = step + window
            if (e > 6):
                paso = paso - (e - 6)
            signalS = np.concatenate((fillCd, signalN[step:paso], fillCe))
            step += halfA

            Hs = H.T.dot(signalS)
            row = [its]
            for metodo in metodos:
                musL = []
                for ite in range(1, iterations):
                    if 'i' in metodo:
                        x = B.dot(signalS)
                    else:
                        x = signalS[3:b + 3]
                    muA, mu = 0.0, 0.0
                    for i in range(ite):
                        if 'GDP' in metodo:
                            x, mu = algo.GDP(x, Hs, A, returnMu=True)
                        elif 'GD' in metodo:
                            x, mu = algo.GD(x, Hs, A, returnMu=True)
                        elif 'SSFlsc' in metodo:
                            x, mu = algo.SSFlsc(x, Hs, A, returnMu=True)
                        elif 'SSFls' in metodo:
                            x, mu = algo.SSFls(x, Hs, A, returnMu=True)
                        elif 'SSF' in metodo:
                            x, mu = algo.SSF(x, Hs, A, returnMu=True)
                        elif 'PCD' in metodo:
                            x, mu = algo.PCD(x, Hs, A, returnMu=True)
                        muA += mu
                    musL.append('%.6f' % (muA / ite))
                row.extend(musL)
            l = len(data)
            data.loc[l] = row
            with lock:
                data.to_csv(nome + '.csv', index=False)
    ended = datetime.datetime.now()
    print('Ended Mi full Test with occupancy %d at  %s after %s' %
          (occupancy, ended.strftime("%H:%M:%S %d/%m/%Y"),
           u.totalTime(startedI)))
    info.info('Ended Mi full Test with occupancy %d after %s' %
              (occupancy, u.totalTime(startedI)))
Пример #8
0
def rodar(patterns, metodos, radical, sinais, occupancy, lock):
    u = Utiliters()
    info = u.setup_logger('information', radical + 'info.log')
    startedI = datetime.datetime.now()
    print('Started B Fator Test with occupancy %d at %s' %
          (occupancy, startedI.strftime("%H:%M:%S %d/%m/%Y")))
    info.info('Started B Fator Test with occupancy %d' % occupancy)
    algo = Algorithms()
    matrizes = Matrizes()
    matrix = matrizes.matrix()
    samples = 1820
    iterations = 331

    for pattern in patterns:
        nome = radical + pattern + '_' + str(occupancy)
        bunch = pattern.rsplit('b', 1)
        empty = bunch[1].rsplit('e', 1)
        b = int(bunch[0])
        e = int(empty[0])
        halfA = e - int(math.ceil(e / 2))
        fillAd = np.zeros(halfA)
        fillAe = np.zeros(e - halfA)
        try:
            signalT = np.genfromtxt(sinais + 'signalT_' + pattern + '_' +
                                    str(occupancy) + '.csv',
                                    delimiter=',')
            signalN = np.genfromtxt(sinais + 'signalN_' + pattern + '_' +
                                    str(occupancy) + '.csv',
                                    delimiter=',')
        except:
            print('Error get saved signals')
            signalT, signalN, signalTf, signalNf = u.sgen(
                pattern, samples, b, fillAd, fillAe, matrix, sinais)

        const = {
            'iterations': iterations,
            'occupancy': occupancy,
            'pattern': pattern,
            'signalT': signalT,
            'signalN': signalN
        }

        # H, A, B = matrizes.generate(b, 0)
        # s, e = int(round(max(B.min(), B.max(), key=abs)*1000)), int(round(min(B.min(), B.max(), key=abs)*1000)-1)
        fatores = [
            2.38, 2.34, 2.3, 2.22, 2.06, 1.62, 1.46, 1.42, 1.4, 1.3, 1.22,
            1.14, 1.02, 0.9, 0.86, 0.74, 0.7, 0.66, 0.62, 0.58, 0.54, 0.5,
            0.46, 0.38, 0.34, 0.3, 0.26, 0.22, 0.18, 0.14, 0.1, 0.06, 0.02,
            0.006, 0.005, 0.004, 0.003, 0.002, 0.001, 0
        ]
        elementos = {
            2.38: 0,
            2.34: 38,
            2.3: 40,
            2.22: 42,
            2.06: 44,
            1.62: 46,
            1.46: 119,
            1.42: 125,
            1.4: 127,
            1.3: 130,
            1.22: 132,
            1.14: 134,
            1.02: 136,
            0.9: 140,
            0.86: 180,
            0.74: 187,
            0.7: 221,
            0.66: 227,
            0.62: 230,
            0.58: 233,
            0.54: 235,
            0.5: 275,
            0.46: 278,
            0.38: 310,
            0.34: 320,
            0.3: 363,
            0.26: 369,
            0.22: 409,
            0.18: 452,
            0.14: 494,
            0.1: 551,
            0.06: 638,
            0.02: 816,
            0.006: 986,
            0.005: 1050,
            0.004: 1062,
            0.003: 1128,
            0.002: 1148,
            0.001: 1280,
            0: 2592
        }

        # te = [np.count_nonzero(B)]
        # for i in range(s, e, -1):
        #     aux = i / 1000
        #     aaux = abs(aux)
        #     H, A, B = matrizes.generate(b, aaux)
        #     tmp = np.count_nonzero(B)
        #     if not tmp in te:
        #         fatores.append(aaux)
        #         elementos[aaux] = tmp
        #         te.append(tmp)

        fatores = sorted(np.abs(fatores))
        colunas = ['Fator', 'Elementos']
        for metodo in metodos:
            for ite in range(1, iterations):
                colunas.append(metodo + ':' + str(occupancy) + ':RMS:' +
                               str(ite))
        data = panda.DataFrame([], columns=colunas)
        for fator in fatores:
            opt = {'maxB': fator, 'mi': .25}
            row = ['%.3f' % fator]
            row.append(elementos[fator])
            for metodo in metodos:
                const['metodo'] = metodo
                for ite in range(1, iterations):
                    const['iterations'] = ite
                    row.append(algo.getRMSfloat(const, opt)['rms'])
            l = len(data)
            data.loc[l] = row
            with lock:
                data.to_csv(nome + '.csv', index=False)
    ended = datetime.datetime.now()
    print('Ended B Fator Test with occupancy %d at  %s after %s' %
          (occupancy, ended.strftime("%H:%M:%S %d/%m/%Y"),
           u.totalTime(startedI)))
    info.info('Ended B Fator Test with occupancy %d after %s' %
              (occupancy, u.totalTime(startedI)))
Пример #9
0
def rodar(patterns, metodos, conf, radical, sinais, occupancy, lock):
    u = Utiliters()
    info = u.setup_logger('information', radical + 'info.log')
    startedI = datetime.datetime.now()
    print('Started Mi Test with occupancy %d at %s' %
          (occupancy, startedI.strftime("%H:%M:%S %d/%m/%Y")))
    info.info('Started Mi Test with occupancy %d' % occupancy)
    algo = Algorithms()
    matrizes = Matrizes()
    matrix = matrizes.matrix()
    samples = 1820

    for pattern in patterns:
        nome = radical + pattern + '_' + str(occupancy)
        bunch = pattern.rsplit('b', 1)
        empty = bunch[1].rsplit('e', 1)
        b = int(bunch[0])
        e = int(empty[0])
        halfA = e - int(math.ceil(e / 2))
        fillAd = np.zeros(halfA)
        fillAe = np.zeros(e - halfA)
        try:
            signalT = np.genfromtxt(sinais + 'signalT_' + pattern + '_' +
                                    str(occupancy) + '.csv',
                                    delimiter=',')
            signalN = np.genfromtxt(sinais + 'signalN_' + pattern + '_' +
                                    str(occupancy) + '.csv',
                                    delimiter=',')
            signalTf = np.genfromtxt(sinais + 'fir/signalT_' + pattern + '_' +
                                     str(occupancy) + '.csv',
                                     delimiter=',')
            signalNf = np.genfromtxt(sinais + 'fir/signalN_' + pattern + '_' +
                                     str(occupancy) + '.csv',
                                     delimiter=',')
        except:
            print('Error get saved signals')
            signalT, signalN, signalTf, signalNf = u.sgen(
                pattern, samples, b, fillAd, fillAe, matrix, sinais)

        const = {
            'iterations': conf['iterations'],
            'occupancy': occupancy,
            'pattern': pattern,
            'signalT': signalT,
            'signalN': signalN
        }
        const['metodo'] = 'FDIP'
        constf = const
        constf['signalNf'] = signalNf
        constf['signalTf'] = signalTf
        rms = algo.getRMSfloat(constf)['rms']

        colunas = ['Iterations', 'mu']
        for metodo in metodos:
            colunas.append(metodo + ':' + str(occupancy) + ':RMS')
        colunas.append('FDIP:' + str(occupancy) + ':RMS')
        data = panda.DataFrame([[np.inf] * (len(colunas) - 1) + [rms]],
                               columns=colunas)
        for it in range(1, conf['iterations']):
            const['iterations'] = it
            for muI in range(conf['sM'], conf['eM']):
                muF = 1 / math.pow(2, muI)
                if muF == 1.0:
                    mi = math.inf
                else:
                    mi = muF
                opt = {'mi': mi}
                row = [it, muF]
                for metodo in metodos:
                    const['metodo'] = metodo
                    row.append(algo.getRMSfloat(const, opt)['rms'])
                row.append(np.inf)
                l = len(data)
                data.loc[l] = row
                with lock:
                    data.to_csv(nome + '.csv', index=False)
    ended = datetime.datetime.now()
    print('Ended Mi Test with occupancy %d at  %s after %s' %
          (occupancy, ended.strftime("%H:%M:%S %d/%m/%Y"),
           u.totalTime(startedI)))
    info.info('Ended Mi Test with occupancy %d after %s' %
              (occupancy, u.totalTime(startedI)))