<jupyter_start><jupyter_text>Выравнивание температуры  Получение данных<jupyter_code>fileIn = "Data/s_1_SiO2_Al2O3.dat" # Входной файл
fileOut = "Data/e_1_SiO2_Al2O3.dat" # Выходной файл<jupyter_output><empty_output><jupyter_text>Считываем данные из файла fileIn.<jupyter_code>data = pd.read_csv(fileIn, index_col=0, dtype=np.double)
data.head()
data.plot();<jupyter_output><empty_output><jupyter_text>Выравнивание температуры Построим линию эквализации для того, чтобы избавиться от "плавающей" температуры.  Уравнение для прямой плавающей температуры записывается в следующем виде:  $y=kx=\frac{y(f) - y(0)}{N}x$,  где f - время в конце, N - количество измерений.  Нам нужна выровненная прямая:  $y=e$,  где e - точка сдвига равновесия, относительно которой будет строиться линия эквализации.  В итоге, прямая эквализации будет записана в виде:  $y=\frac{y(f) - y(0)}{N}x+e$ Посмотрим, как выглядит прямая для образца SiO2.<jupyter_code>column = "SiO2"<jupyter_output><empty_output><jupyter_text>Определим точку равновесия как температуру в середине графика.<jupyter_code>point = (data[column].iloc[0] + data[column].iloc[-1]) / 2
point
ql = equalization.equalization_line(data, column, point)<jupyter_output><empty_output><jupyter_text>Выведем график прямой.<jupyter_code>ql.plot();<jupyter_output><empty_output><jupyter_text>Эквализация будет проходить следующим образом: из данных каждого образца вычитается своя линия эквализации. Таким образом, получаются графики без "плавающей" температуры. Зададим точки равновесия температурой в середине графиков.<jupyter_code>ep = {}
for key in data.keys():
    ep[key] = (data[key].iloc[0] + data[key].iloc[-1]) / 2
ep<jupyter_output><empty_output><jupyter_text>Так же, точки можно задать температурой явно:<jupyter_code>#ep = {}
#ep["SiO2"] = 22.0
#ep["Au/SiO2"] = 24.2
#ep["Al2O3"] = 26.0
#ep["Au/Al2O3"] = 21.5<jupyter_output><empty_output><jupyter_text>Или по времени:<jupyter_code>#ep = {}
#time = 800
#ep["SiO2"] = data["SiO2"][0:time].iloc[-1]
#ep["Au/SiO2"] = data["Au/SiO2"][0:time].iloc[-1]
#ep["Al2O3"] = data["Al2O3"][0:time].iloc[-1]
#ep["Au/Al2O3"] = data["Au/Al2O3"][0:time].iloc[-1]<jupyter_output><empty_output><jupyter_text>Произведем эквализацию.<jupyter_code>equalized = equalization.equalization(data, ep)
print("Начальные данные и эквализированный график, соответственно:")
data.plot();
equalized.plot();<jupyter_output>Начальные данные и эквализированный график, соответственно:<jupyter_text>Экспорт данных Экспортируем эквализированные данные в файл fileOut.<jupyter_code>equalized.to_csv(fileOut)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1397228637413395, 'fraction_numerical': 0.023094688221709007, 'mean_word_length': 7.9006849315068495, 'pattern_counts': {'":': 0, '<': 40, '<?xml version=': 0, '>': 40, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '10', 'dir': 'jupyter-structured-clean-dedup', 'id': '250536', 'license': 'MIT', 'n_tokens_mistral': 1184, 'n_tokens_neox': 1288, 'n_words': 185, 'path': 'Examples/3.0.0 - Equalization.ipynb', 'repo_name': 'deverte/IRSorption', 'size': '2598'}