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