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