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

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

Первое: датасет вырос почти втрое - 16 796 ручных замеров от 166 питомцев за 12 месяцев (ноябрь 2025 - октябрь 2026). Методология та же, релизы напрямую сравнимы.
Второе: в приложении появился пользователь-энтузиаст, который начал выгружать данные из FreeStyle Libre, и в датасете появился второй файл - 10 418 точек непрерывного мониторинга (CGM). 94 дня из жизни одной кошки с диабетом, по ~96 замеров в день вместо 1-3 вручную.
Третье: готовя релиз, я нашёл в собственных данных то, чего там быть не должно. Об этом - ниже.
Оба файла анонимизированы и лежат на GitHub под CC BY-NC. Пулл-реквесты на анализ приветствуются.
Я разработчик, а не ветеринарный врач.
Всё ниже - наблюдения из данных исследования с самоотбором, а не клинические рекомендации.
Что изменилось за год: цифры

март 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. Выборка утроилась, а картина - нет: типичный питомец на платформе по-прежнему живёт с хронической гипергликемией, и доступность мониторинга сама по себе её не лечит.

Что выросло - это вовлечённость тех, кто остался: медиана записей на питомца удвоилась (16 → 31), питомцев со 100+ замерами стало 57. Ядро владельцев ведёт дневник месяцами.
Портрет пациента не изменился и совпадает с литературой: средний возраст кошки 10.6 года, 57% самцов.
Находка №1: ручной глюкометр слеп ночью. CGM это показал
Утренняя гипогликемия - классический кошмар владельца диабетика: действие вечернего инсулина заканчивается к 5-7 утра, и именно там кот может уехать вниз. В марте я писал, что худший контроль наблюдается в 5-7 утра. Но ручные данные там почти слепы: всего 8.3% замеров делается между 03:00 и 07:00, и гипо в них - 3%.

CGM-кошка закрыла этот пробел. Из 10 418 точек:
229 ниже 3.5 ммоль/л, из них 75% - между 03:00 и 07:00
В ночном окне 03:00-06:59 гипо - 10.3% точек (против 3% в ручных данных)
Минимум - 2.0 ммоль/л; 11 дней из 94 имели хотя бы одну гипо-точку


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

Находка №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, но зеркальный: дубликаты в реальном времени не выглядят ошибкой - они выглядят как рост выборки. Считайте не строки, а физические источники.
Находка №4: пустой insulin_group != «без инсулина»
Мелкая, но важная деталь для пользователей датасета. Я сравнил профили «без инсулина» - а у 25 из 30 дозы инсулина прямо в записях. Просто тип в профиле не выбран. Если анализировать по insulin_group, четверть «безинсулиновых» уедет в неправильную группу.
Поэтому в README теперь явная оговорка: пустой insulin_group значит «тип не указан», а не «инсулина нет». Реальную терапию смотреть по insulin_dose_u > 0. Это не баг приложения - это честное поведение людей: доза важна каждый день, справочник - один раз.
Как строился релиз v2
Коротко о процессе, вдруг кому пригодится:
Экспорт из production PostgreSQL (те же фильтры, что в v1: глюкоза 0.1-50 ммоль/л)
Автовалидация: структура, диапазоны, дубликаты (pet, date, time), анонимность (grep по email/именам), непрерывность pet_id
Ручное разбирательство каждого флага валидатора на живой базе - так и нашлись люди и клонированный сенсор
Найденные артефакты v1 (тестовые записи дня запуска, повторные замеры в ту же минуту) оставлены как есть - чистка сломала бы сравнимость с релизом марта
Планы
Все ещё хочется повторить анализ инсулинов на выборке втрое больше - гларгин U100 против детемира на 166 питомцах
Всё ещё мало лабораторных анализов для коморбидности с ХБП
Всё ещё мало данных для реализации ML модели, предсказывающей возникновение гипо.
К слову, если ваше животное больно диабетом и вам нужен удобный трекер - приходите. Чем больше будет данных, тем быстрее можно будет достичь реализации ML модели.
Датасет на GitHub, лицензия CC BY-NC.
Первая статья: habr.com/ru/articles/1010334.
Если нашли в данных что-то интересное - приходите с PR, упомяну в следующей статье.
Надеюсь, было интересно.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
0%Считать источники, не строки. Четыре «кошки» оказались одним сенсором0
0%Искать записи «не из этой вселенной». У нас в питомцах сидели люди0
0%Пустое поле — не факт. Нет типа инсулина ≠ без инсулина0
0%Смотреть, где прибор слепой. Ночь глюкометр почти не видит0
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.