| | import numpy as np
|
| | import pandas as pd
|
| | from scipy import interpolate
|
| |
|
| | global dataWriter
|
| |
|
| | def convert_file(file_path):
|
| | suffix = file_path.split('.')[-1]
|
| | if suffix not in ['txt', 'csv', 'xy']:
|
| | Warning(f'File {file_path} not supported, skiping...')
|
| | return None
|
| |
|
| | if suffix == 'txt':
|
| | return txt_to_csv(file_path)
|
| | elif suffix == 'csv':
|
| | return csv_to_csv(file_path)
|
| | elif suffix == 'xy':
|
| | return xy_to_csv(file_path)
|
| |
|
| | def txt_to_csv(file_path):
|
| | f = open(file_path, 'r')
|
| | rows = []
|
| | for line in f.readlines():
|
| | line = line.strip('\n')
|
| | line = line.replace('\t', ' ')
|
| | line = [x for x in line.split(' ') if x != '']
|
| | if len(line) == 3:
|
| | try:
|
| | line = [line[0], float(line[1])-float(line[2])]
|
| | except ValueError:
|
| | continue
|
| | elif len(line) < 2 or len(line) > 3:
|
| | continue
|
| | rows.append(line)
|
| | f.close()
|
| |
|
| | outData = upsample(rows)
|
| | return outData
|
| |
|
| | def csv_to_csv(file_path):
|
| | fromData = pd.read_csv(file_path).values
|
| | outData = upsample(list(fromData))
|
| | return outData
|
| |
|
| | def xy_to_csv(file_path):
|
| | return txt_to_csv(file_path)
|
| |
|
| | def upsample(rows):
|
| | if len(rows) == 0:
|
| | Warning('Empty data!')
|
| | return None
|
| |
|
| | rows.insert(0, ['10', rows[0][1]]) if float(rows[0][0]) > 10 else None
|
| | rows.append(['80', rows[-1][1]]) if float(rows[-1][0]) < 80 else None
|
| | rowsData = np.array(rows, dtype=np.float32)
|
| | f = interpolate.interp1d(rowsData[:, 0], rowsData[:, 1], kind='slinear')
|
| | xnew = np.linspace(10, 80, 4500)
|
| | ynew = f(xnew)
|
| |
|
| | return ynew |