Skip to content

Add organism classification (taxonomy-first) with diagnostics#2383

Closed
SatoryKono wants to merge 1 commit intomainfrom
codex/add-organism-classification-function-2mbsv8
Closed

Add organism classification (taxonomy-first) with diagnostics#2383
SatoryKono wants to merge 1 commit intomainfrom
codex/add-organism-classification-function-2mbsv8

Conversation

@SatoryKono
Copy link
Copy Markdown
Owner

Motivation

  • Реализовать детерминированную классификацию организмов для полей assay_organism + assay_taxonomy_id в доменном слое (категории: acellular / unicellular / multicellular) с приоритетом taxonomy_id и диагностикой конфликтов источников.
  • Поддержать нормализацию имен, алиасы и простую расширяемую таблицу соответствий без внешних HTTP-вызовов и с полной типизацией публичного API.

Description

  • Добавлен доменный сервис classify_organism в src/bioetl/domain/services/organism_classification_service.py с контрактом OrganismClass (Enum) и OrganismClassificationResult (frozen dataclass) и вспомогательными lookup/normalize-функциями.
  • Реализована логика: assay_taxonomy_id → map; при отсутствии валидного taxonomy_id — normalize assay_organism + alias/dictionary lookup + binomial fallback + keyword rule для вирусов/фагов; при конфликте помечается source_conflict=True.
  • Экспорт нового API через bioetl.domain.services.__init__ для удобного импорта (OrganismClass, OrganismClassificationResult, classify_organism).
  • Добавлены unit-тесты tests/unit/domain/services/test_organism_classification_service.py, покрывающие требования (viruses/phage, bacteria/fungi, multicellular, aliases, conflicts, invalid input).
  • Небольшие вспомогательные правки для прохождения репозиторных проверок: упрощён возврат валидированных моделей в contract_policy_loader, мелкие формат/типографические правки в base_config_loader и memory_monitor (убраны/упрощены проблемные комменты), чтобы mypy/ruff/isort проходили.

Testing

  • Выполнены unit-тесты для нового сервиса: uv run python -m pytest tests/unit/domain/services/test_organism_classification_service.py — успешно.
  • Архитектурный тест сложности функций: uv run python -m pytest tests/architecture/test_code_metrics.py::TestFunctionComplexity::test_domain_complexity — успешно (функции в домене в рамках CC limit).
  • Строгая типизация: uv run python -m mypy --strict src/bioetl/ — успешно.
  • Форматирование/импорт-стиль: uv run python -m ruff format --check src tests и uv run python -m ruff check --select I src tests — успешно после авто-форматирования/фиксинга затронутых файлов.
  • Полный тестовый прогон: uv run python -m pytest tests/ -x -q — большинство тестов прошло; один E2E упал из-за внешнего 500 Internal Server Error от ChEMBL API при запросе (вне области изменений классификатора) и отмечен как внешний/не относящийся к этой реализации.

Codex Task

@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@SatoryKono
Copy link
Copy Markdown
Owner Author

Superseded by #2380.

@SatoryKono SatoryKono closed this Mar 2, 2026
@SatoryKono SatoryKono deleted the codex/add-organism-classification-function-2mbsv8 branch March 3, 2026 09:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant