Skip to content

oandrewv/fluorescence-analysis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

fluorescence-analysis

Данный код создает программу для анализа концентрации аналита (в частности, гистамина или глифосата) по флуоресцентным изображениям тест-полосок с использованием библиотек компьютерного зрения и машинного обучения. Программа автоматически создаст необходимые директории и проведет вас через процесс калибровки и анализа. Вот что делает программа:

  1. Позволяет выбрать область интереса (ROI) на тест-полоске.
  2. Выполняет предварительную обработку изображений.
  3. Извлекает интенсивность флуоресценции, анализируя яркость и насыщенность.
  4. Строит калибровочную кривую на основе образцов с известными концентрациями.
  5. Предсказывает концентрацию аналита для новых образцов.
  6. Визуализирует результаты анализа, включая:
    • Исходное изображение
    • Выделенную область интереса
    • Гистограмму яркости
    • Калибровочную кривую с отметкой текущего образца.

Для использования программы вам потребуется:

  1. Набор калибровочных изображений с известными концентрациями.
  2. Изображения исследуемых образцов.
  3. Библиотеки Python: OpenCV, NumPy, Matplotlib и scikit-learn.

Особенности.

  1. Линейная зависимость в логарифмических координатах: калибровочная кривая строится как зависимость интенсивности флуоресценции от десятичного логарифма концентрации (lg₁₀(концентрации)). Используется простая линейная модель вместо полиномиальной.
  2. Концентрации преобразуются в логарифмические значения перед построением модели. Проверяется, что все концентрации положительные (для возможности логарифмирования)
  3. Сохраняются коэффициенты линейной регрессии (наклон и пересечение).
  4. Предсказания концентрации. Для этого используется обратное преобразование: сначала вычисляется lg(концентрации), затем восстанавливается реальная концентрация через потенцирование ($10^x$).
  5. Графики строятся в координатах "интенсивность от log₁₀(концентрации)". На графиках отображается уравнение линии и значение R². Форматирование вывода концентрации в научной нотации.
  6. В результатах и на графиках отображаются как сама концентрация, так и её логарифм.
  7. Присутствуют проверки корректности данных (положительные концентрации, ненулевой наклон). Этот подход соответствует распространённому методу калибровки в аналитической химии, где часто наблюдается линейная зависимость сигнала от логарифма концентрации.
  8. Концентрации калибровочных растворов автоматически извлекаются из имён файлов, поэтому при сохранении фотографий тест-полосок их имена должны соответствовать концентрациям раствора аналита, нанесенных на них. Поддерживаются различные форматы имен: conc_1.23.jpg, 1.23-conc.jpg, просто 1.23.jpg и т.д.
  9. Возможно сохранение/загрузка калибровочных данных для повторного использования (сохраняется в файле `calibration_data.npy).
  10. Реализовано автоматическое сохранение графиков калибровки и результатов анализа.
  11. Все результаты записываются в текстовый файл analysis_results.txt для удобного доступа.
  12. Организация работы с файлами:
  • Создается директория для результатов анализа.
  • Графики сохраняются с высоким разрешением (300 dpi).
  • Программа проверяет наличие сохраненной калибровки и предлагает её использовать.

Установка программы.

  1. Скачайте и установите Python с сайта https://www.python.org/downloads/. При установке обязательно отметьте флажком "Add Python to PATH".
  2. Установите необходимые библиотеки. Если вы работаете на Windows, откройте консоль (клавиши Win+R, введите cmd и нажмите ввод), наберите:
pip install Opencv-python
pip install numpy
pip install matplotlib
pip install scikit-learn

Скачайте и запустите файл fluorescence-analysis.py, следуйте подсказкам.

Анализ кода Fluorescence-Analysis.py

  1. Импорт библиотек Код начинается с импорта необходимых библиотек:
    • cv2 (OpenCV) - для обработки изображений
    • numpy - для работы с числовыми массивами
    • matplotlib.pyplot - для визуализации данных
    • sklearn.linear_model - для построения линейной регрессии
    • sklearn.metrics - для оценки качества модели
    • os - для работы с файловой системой
    • math - для математических операций
    • re - для работы с регулярными выражениями
  2. Класс FluorescenceAnalyzer
  • Основной функционал заключен в классе FluorescenceAnalyzer, который предоставляет методы для:

2.1 Инициализация объекта

  • Инициализирует объект с пустыми атрибутами для калибровочной кривой, модели, координат ROI (области интереса) и коэффициента детерминации (R²)

2.2 Выбор области интереса (ROI)

  • Метод select_roi позволяет пользователю выбрать 4 точки на изображении для определения области интереса
  • Использует matplotlib для отображения изображения и получения координат выбранных точек

2.3 Предобработка изображения

  • Метод preprocess_image загружает изображение и применяет маску ROI
  • Если ROI не выбран, использует всё изображение

2.4 Извлечение интенсивности флуоресценции

  • Метод extract_fluorescence_intensity анализирует изображение для определения интенсивности флуоресценции
  • Преобразует изображение в цветовое пространство HSV
  • Рассчитывает комбинированную метрику на основе средней яркости (канал V) и насыщенности (канал S)

2.5 Извлечение концентрации из имени файла

  • Метод extract_concentration_from_filename извлекает числовое значение концентрации из имени файла
  • Поддерживает различные форматы записи концентрации в имени файла

2.6 Построение калибровочной прямой

  • Метод build_calibration_curve строит линейную калибровочную прямую на основе известных концентраций и измеренных интенсивностей
  • Преобразует концентрации в логарифмическую шкалу (по основанию 10)
  • Создает модель линейной регрессии для зависимости интенсивности от логарифма концентрации
  • Вычисляет коэффициент детерминации R²

2.7 Предсказание концентрации

  • Метод predict_concentration использует калибровочную кривую для предсказания концентрации по измеренной интенсивности
  • Применяет обратную формулу регрессии и обратное логарифмирование

2.8 Визуализация калибровочной кривой

  • Метод visualize_calibration_curve создает график калибровочной прямой
  • Отображает исходные точки и линию регрессии
  • Показывает уравнение линии и коэффициент R²

2.9 Анализ изображения образца

  1. Метод analyze_sample_image выполняет полный анализ изображения с визуализацией
  2. Создает визуализацию с 4 панелями: - Исходное изображение - Область интереса (ROI) - Гистограмма яркости - Калибровочная прямая с отмеченным результатом анализа (зеленая точка)

2.10 Сохранение и загрузка калибровки

  • Методы save_calibration и load_calibration позволяют сохранять и загружать данные калибровки
  1. Функция main() Демонстрирует использование класса FluorescenceAnalyzer:
    1. Создает объект анализатора
    2. Проверяет наличие директорий с калибровочными изображениями и образцами
    3. Проверяет наличие сохраненной калибровки
    4. Если нет сохраненной калибровки или пользователь хочет создать новую:
    • Собирает список калибровочных изображений
    • Предлагает пользователю выбрать ROI
    • Строит калибровочную кривую
    • Визуализирует и сохраняет калибровочную кривую
    • Сохраняет данные калибровки
    1. Собирает список образцов для анализа
    2. Анализирует каждый образец и сохраняет результаты
    3. Выводит итоговые результаты и сохраняет их в текстовый файл
  2. Блок запуска Запускает функцию main() при непосредственном запуске скрипта.

About

Данный код создает программу для анализа концентрации аналита по флуоресцентным изображениям тест-полосок с использованием библиотек компьютерного зрения и машинного обучения

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages