3.5 KiB
Биопортал Лаб
Русскоязычный frontend-прототип платформы для лабораторных расчётов и анализа микробиологических экспериментов.
Текущий фокус — демонстрационный сценарий PetriCount: загрузка фотографии чашки Петри, поиск кандидатов на колонии CV-baseline, ручная коррекция и передача результата в расчёт КОЕ/мл.
Важно: текущий PetriCount — экспериментальный интерфейс и baseline-модель. Результаты не являются лабораторно валидированным измерением и требуют ручной проверки.
Что есть в проекте
- адаптивный дашборд Биопортал Лаб;
- экран PetriCount с загрузкой JPG, PNG и WEBP;
- добавление и удаление маркеров вручную;
- локальный Flask API для анализа изображений;
- обучаемый CV-baseline: генерация многомасштабных кандидатов + Random Forest, обучаемый на JSON-разметке AGAR;
- скрипт повторного обучения модели.
Быстрый запуск
Требуется Python 3.13 или новее.
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python server.py
Откройте http://127.0.0.1:8000 и перейдите в карточку PetriCount.
Повторное обучение CV-baseline
Чтобы переобучить модель, положите пары *.jpg и *.json в AGAR_representative/, сохраняя относительную структуру каталогов, затем выполните:
.venv/bin/python train_petri_model.py
Разметка должна содержать поля x, y, width, height и class для каждой колонии. Полученная модель записывается в models/petri_candidate_classifier.joblib.
Каталоги с датасетом, моделью и виртуальным окружением исключены из Git: они весят около 400 МБ и создаются или поставляются локально.
Структура
index.html / styles.css / app.js Главный дашборд
petricount.* Интерфейс PetriCount
server.py Локальный Flask API и раздача frontend
petri_cv.py Признаки и генерация CV-кандидатов
train_petri_model.py Обучение baseline-модели
requirements.txt Версии Python-зависимостей
Ограничения текущего прототипа
- модель обучена на небольшой выборке и не имеет независимой валидации;
- API предназначен для локального запуска, без авторизации и хранения данных;
- экспорт, расчёт КОЕ/мл и сохранение экспериментов пока являются интерфейсными сценариями, а не полноценным backend-функционалом.