- BrainTools - https://www.braintools.ru -

17 тысяч замеров и один FreeStyle Libre: год данных о диабете у кошек

Почти год назад я рассказывал [1], как за 5 дней написал приложение Diabnostic [2]для мониторинга диабета у своей кошки. В марте делился [3]первым датасетом: 6 773 замера от 121 питомца. С тех пор произошло три вещи.

Смотри, Маня, тут есть графики!

Смотри, Маня, тут есть графики!

Первое: датасет вырос почти втрое – 16 796 ручных замеров от 166 питомцев за 12 месяцев (ноябрь 2025 – октябрь 2026). Методология та же, релизы напрямую сравнимы.

Второе: в приложении появился пользователь-энтузиаст, который начал выгружать данные из FreeStyle Libre, и в датасете появился второй файл – 10 418 точек непрерывного мониторинга (CGM). 94 дня из жизни одной кошки с диабетом, по ~96 замеров в день вместо 1-3 вручную.

Третье: готовя релиз, я нашёл в собственных данных то, чего там быть не должно. Об этом – ниже.

Оба файла анонимизированы и лежат на GitHub [4] под CC BY-NC. Пулл-реквесты на анализ приветствуются.

Я разработчик, а не ветеринарный врач.
Всё ниже – наблюдения из данных исследования с самоотбором, а не клинические рекомендации.

Что изменилось за год: цифры

17 тысяч замеров и один FreeStyle Libre: год данных о диабете у кошек - 2

 март 2026

 октябрь 2026

Записей (ручные)

6 773

16 796

Питомцев

117

166 (153 кошки, 13 собак)

Медиана глюкозы

14.5 ммоль/л

14.5 ммоль/л

В целевом диапазоне 4-10

28.8%

27.8%

Гипогликемия < 3.5

4.9%

3.1%

Медиана записей на питомца

16

31

Самое интересное в этой таблице – чего в ней не изменилось. Медиана глюкозы за полгода не сдвинулась ни на десятую: 14.5 и 14.5. Выборка утроилась, а картина – нет: типичный питомец на платформе по-прежнему живёт с хронической гипергликемией, и доступность мониторинга сама по себе её не лечит.

17 тысяч замеров и один FreeStyle Libre: год данных о диабете у кошек - 3

Что выросло – это вовлечённость тех, кто остался: медиана записей на питомца удвоилась (16 → 31), питомцев со 100+ замерами стало 57. Ядро владельцев ведёт дневник месяцами.

Портрет пациента не изменился и совпадает с литературой: средний возраст кошки 10.6 года, 57% самцов.

Находка №1: ручной глюкометр слеп ночью. CGM это показал

Утренняя гипогликемия – классический кошмар владельца диабетика: действие вечернего инсулина заканчивается к 5-7 утра, и именно там кот может уехать вниз. В марте я писал, что худший контроль наблюдается в 5-7 утра. Но ручные данные там почти слепы: всего 8.3% замеров делается между 03:00 и 07:00, и гипо в них – 3%.

17 тысяч замеров и один FreeStyle Libre: год данных о диабете у кошек - 4

CGM-кошка закрыла этот пробел. Из 10 418 точек:

  • 229 ниже 3.5 ммоль/л, из них 75% – между 03:00 и 07:00

  • В ночном окне 03:00-06:59 гипо – 10.3% точек (против 3% в ручных данных)

  • Минимум – 2.0 ммоль/л; 11 дней из 94 имели хотя бы одну гипо-точку

Оговорка к этому графику: синие столбики в 4 утра тоже высокие по доле. Это не «глюкометр всё видит». Это отбор: ночью меряют, когда уже плохо. Сенсор меряет всегда, поэтому его 12% в 4:00 - знаменатель другой.

Оговорка к этому графику: синие столбики в 4 утра тоже высокие по доле. Это не «глюкометр всё видит». Это отбор: ночью меряют, когда уже плохо. Сенсор меряет всегда, поэтому его 12% в 4:00 – знаменатель другой.
11 сентября 2026. Гипо держалась с 03:11 до 06:47, минимум 2.2. Ручным глюкометром эту ночь не увидеть.

11 сентября 2026. Гипо держалась с 03:11 до 06:47, минимум 2.2. Ручным глюкометром эту ночь не увидеть.

Практический вывод владельцу: если вы меряете только «до/после укола» – а большинство меряет именно так, пики 08:00 и 20:00 – вы систематически пропускаете окно, где гипогликемия наиболее вероятна. Сенсор видит то, что глюкометр в 4 утра не увидит никогда.

Оговорка: это одна кошка, плохо компенсированная (медиана 20.3, TIR 12.4% - данные не популяционные). Но окно 03:00-07:00 как зона риска - ожидаемо и в ручных данных, просто там его толком не видно.

Оговорка: это одна кошка, плохо компенсированная (медиана 20.3, TIR 12.4% – данные не популяционные). Но окно 03:00-07:00 как зона риска – ожидаемо и в ручных данных, просто там его толком не видно.

Находка №2: среди питомцев были люди

Готовя релиз, я прогнал по датасету автовалидацию – и среди «безинсулиновых» профилей нашёл три, которые вели себя не как кошки.

Один – 8 месяцев аккуратного дневника: глюкоза 6-9 (человеческий, а не кошачий диапазон), дозы 8-10 единиц, заметки на английском «after ~15K steps», «after 3 pieces of sugar and cup of sweet grape juice» (человек купировал собственную гипо), лаборатория LifeLabs, сравнение показаний с Libre 2 и Libre 3. Владелец вёл в приложении дневник собственного диабета 2 типа – под видом кошки. Второй и третий – дозы 10-24 единицы и замер «2303» (мг/дл с человеческого глюкометра): кошка при 10+ единиц инсулина просто не выживет.

Итого 91 запись, 3 профиля – исключены. В первой статье я говорил, что мусорных записей в базе нет, потому что есть валидация диапазонов. Валидация честно отработала: 8-10 единиц и глюкоза 6-9 проходят в любые кошачьи рамки. Против правдоподобных данных нет приёма, кроме взгляда глазами.

Урок для публикующих датасеты: анонимизация удаляет имена, но не вид. Если ваш датасет о кошках – ищите записи, которые «слишком человеческие». Шаги, HbA1c, мг/дл вместо ммоль/л, человеческие дозы.

Находка №3: «4 кошки» оказались одним сенсором

Вторая история из той же валидации. В CGM-файле было 4 кошки – и валидатор взвыл: у «разных» кошек совпадают дата, время и глюкоза до десятой. Копнул: на общих таймстампах профили совпадают на 97-99% значений. Это один физический сенсор, который владелец залил в 4 профиля (обкатка интеграции: «попробуем ещё раз», «а теперь полный импорт»).

Если бы я опубликовал «4 кошки, 29 516 точек» – биолог-пользователь сделал бы из этого выводы про 4 животных. Я слил профили в одного питомца с дедупликацией: 30 096 → 10 418 точек. Три четверти «CGM-данных» были копиями.

Урок тот же, что в №2, но зеркальный: дубликаты в реальном времени не выглядят ошибкой [5] – они выглядят как рост выборки. Считайте не строки, а физические источники.

Находка №4: пустой insulin_group != «без инсулина»

Мелкая, но важная деталь для пользователей датасета. Я сравнил профили «без инсулина» – а у 25 из 30 дозы инсулина прямо в записях. Просто тип в профиле не выбран. Если анализировать по insulin_group, четверть «безинсулиновых» уедет в неправильную группу.

Поэтому в README теперь явная оговорка: пустой insulin_group значит «тип не указан», а не «инсулина нет». Реальную терапию смотреть по insulin_dose_u > 0. Это не баг приложения – это честное поведение [6] людей: доза важна каждый день, справочник – один раз.

Как строился релиз v2

Коротко о процессе, вдруг кому пригодится:

  • Экспорт из production PostgreSQL (те же фильтры, что в v1: глюкоза 0.1-50 ммоль/л)

  • Автовалидация: структура, диапазоны, дубликаты (pet, date, time), анонимность (grep по email/именам), непрерывность pet_id

  • Ручное разбирательство каждого флага валидатора на живой базе – так и нашлись люди и клонированный сенсор

  • Найденные артефакты v1 (тестовые записи дня запуска, повторные замеры в ту же минуту) оставлены как есть – чистка сломала бы сравнимость с релизом марта

Планы

  • Все ещё хочется повторить анализ инсулинов на выборке втрое больше – гларгин U100 против детемира на 166 питомцах

  • Всё ещё мало лабораторных анализов для коморбидности с ХБП

  • Всё ещё мало данных для реализации ML модели, предсказывающей возникновение гипо.


    К слову, если ваше животное больно диабетом и вам нужен удобный трекер –
    приходите [2]. Чем больше будет данных, тем быстрее можно будет достичь реализации ML модели.

Датасет на GitHub [7], лицензия CC BY-NC.
Первая статья: habr.com/ru/articles/1010334 [8].
Если нашли в данных что-то интересное – приходите с PR, упомяну в следующей статье.

Надеюсь, было интересно.

Автор: teamfighter

Источник [9]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/37501

URLs in this post:

[1] рассказывал: https://habr.com/ru/articles/966884/

[2] Diabnostic : https://diabnostic.ru

[3] делился : https://habr.com/ru/articles/1010334/

[4] лежат на GitHub: https://github.com/teamfighter/diabnostic_datasets/

[5] ошибкой: http://www.braintools.ru/article/4192

[6] поведение: http://www.braintools.ru/article/9372

[7] GitHub: https://github.com/teamfighter/diabnostic_datasets

[8] habr.com/ru/articles/1010334: http://habr.com/ru/articles/1010334

[9] Источник: https://habr.com/ru/articles/1099294/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1099294

www.BrainTools.ru

Rambler's Top100