← back
Data Analysis · TypeScript

SpectraCalc

Открыть проект →
TypeScriptNestJSReactDeployed
SpectraCalc

Проблематика

В результате процедуры спектроскопии комбинационного рассеяния образца по сетке 10*10 на выходе из прибора мы имеем .zip с сотней файлов-записей показаний прибора, в каждом из которых около 3500 пар значений. Для дальнейшей работы необходимо преобразовать такой .zip в heatmap распределения пиков вещества, а также вычислить среднее, σ и коэффициент вариации - с учетом количества данных и необходимой точности расчетов, вручную такой процесс занимает кучу времени

SpectraCalc берёт такой ZIP и интервал волновых чисел (см⁻¹) и за секунды отдаёт тепловую карту распределения, PDF-отчёт, CSV с матрицей и вердикт об однородности - через веб-интерфейс или Telegram-бота

Принцип работы

  1. Каждый из 100 файлов - это спектр (волновое число и интенсивность) в одной точке сетки, снятой на поверхности образца
  2. В заданном интервале для каждого спектра ищется пик и вычитается локальный фон
  3. 100 полученных значений выстраиваются в матрицу 10×10 по номеру файла - так плоский список снова становится картой образца
  4. По матрице считается статистика (среднее, σ, коэффициент вариации Sr = σ/μ) и категория однородности: отлично / приемлемо / удовлетворительно / неприемлемо
  5. Результат рендерится в тепловую карту (PNG), PDF-отчёт и CSV

Стек

  • Backend - TypeScript + NestJS, @napi-rs/canvas (рендер PNG), pdfkit (PDF), adm-zip, Telegram-бот на grammy
  • Frontend - TypeScript + React + Vite, Tailwind