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)))
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)))
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)))
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)))
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)))
# 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)))
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)))
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)))
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)))