kinetik_model_testing/scripts/main.py
2026-06-27 17:36:46 +03:00

47 lines
1.6 KiB
Python

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
def plot_csv(file_path):
df = pd.read_csv(file_path, decimal=',', sep=';')
plt.plot(df.iloc[1:, 0], df.iloc[1:, 1], linewidth=0.5)
plt.title(file_path)
plt.xlabel(df.columns[0])
plt.ylabel(df.columns[1])
plt.grid(True)
plt.show()
def shift_x_to_zero(input_file, output_file):
df = pd.read_csv(input_file, decimal=',', sep=';')
df.iloc[1:, 0] = df.iloc[1:, 0] - df.iloc[1:, 0].iloc[0]
df.to_csv(output_file, index=False, decimal=',', sep=';')
def normalize_current(input_path, output_path, frac_avg=0.05):
df = pd.read_csv(input_path, sep=';', decimal=',')
t = df.iloc[:, 0].values
I = df.iloc[:, 1].values
n = len(I)
n_avg = max(1, int(n * frac_avg))
first_mean = np.mean(I[:n_avg])
last_mean = np.mean(I[-n_avg:])
if first_mean > last_mean:
I_max = first_mean
I_min = last_mean
else:
I_max = last_mean
I_min = first_mean
I_norm = 1-(I - I_min)/abs(I_max - I_min)
out = pd.DataFrame({'Time': t, 'I_norm': I_norm})
out.to_csv(output_path, sep=';', decimal=',', index=False)
files = ["MEM_16M_B.csv", "MEM_1M_B.csv", "MEM_4M_B.csv", "MRZ_2.178_16.7M_B.csv", "MRZ_2.178_5.6M_B.csv", "MRZ_2.178_50M_B.csv", "MEM_16M_R.csv", "MEM_1M_R.csv", "MEM_4M_R.csv", "MRZ_2.178_16.7M_R.csv", "MRZ_2.178_5.6M_R.csv", "MRZ_2.178_50M_R.csv"]
dir1 = "data/raw/"
dir2 = "data/processed/"
for file in files:
shift_x_to_zero(dir1 + file, dir2 + file)
normalize_current(dir2 + file, dir2 + file)
plot_csv(dir2 + file)
# plot_csv(dir1 + file)