CellProfiler Analyst помогает исследователям разбирать большие наборы микроскопических данных после измерения изображений: связывает числовые признаки с исходными кадрами, позволяет искать выбросы и пространственные артефакты, обучать классификатор фенотипов на размеченных клетках или полях зрения и затем подсчитывать классы во всём эксперименте. Программа особенно полезна в high-content screening, клеточной биологии и фенотипическом профилировании, когда обычная таблица уже не даёт удобного перехода от числа к изображению, а ручной просмотр тысяч полей зрения непрактичен.
- Обычная обработка фотографий
- Цвет, экспозиция и кадрирование
- Не заменяет научные вычисления
- Нужны измерения и properties-файл
- Нет ручного редактирования пикселей
- Графики могут тормозить на больших БД
Как CellProfiler Analyst вписывается в рабочий процесс
CellProfiler Analyst, или CPA, не заменяет сегментацию и измерение объектов. Его типичный вход — уже подготовленные таблицы признаков и ссылки на изображения. Часто эти данные создаёт CellProfiler через модуль ExportToDatabase: одна таблица содержит сведения на уровне изображений, другая — строки отдельных объектов, например ядер или клеток. CPA читает идентификаторы, координаты центров объектов, измерения интенсивности, формы, текстуры и метаданные, а затем даёт интерактивные способы связать статистику с исходной визуальной картиной.
Из этого следует важное практическое различие. Если задача звучит как «найти ядра, отделить клетки от фона и измерить площадь», сначала нужен CellProfiler, ilastik, QuPath или другой инструмент сегментации. Если же объекты уже измерены и нужно понять, какие признаки отличают фенотипы, где на планшете концентрируются необычные значения, какие поля являются выбросами и как автоматически классифицировать миллионы объектов по нескольким размеченным примерам, тогда CPA попадает точно в свою предметную область.
Основные окна программы связаны между собой. Image Gallery и Image Viewer показывают исходные поля и отдельные объекты; Classifier использует измерения для supervised learning; Plate Viewer переносит значение на геометрию планшета; Scatter Plot, Histogram, Density Plot и Box Plot помогают исследовать распределения; Table Viewer служит связующим слоем между числовыми результатами и изображениями; Normalization Tool подготавливает таблицу; Dimensionality Reduction сжимает множество признаков в несколько компонент. Такая связка важнее количества отдельных функций: исследователь может найти подозрительную точку на графике, открыть соответствующее изображение, проверить биологический смысл и при необходимости перенести объект в обучающую выборку.
Главное окно сравнительно компактно. В верхней части расположены кнопки инструментов, а основное пространство занимает журнал. Лог нужен не только разработчику: при работе с большой SQLite- или MySQL-базой он показывает подключение, загрузку данных, предупреждения и ошибки запросов. Через меню Logging можно менять детализацию сообщений от Critical до Debug. В обычной работе достаточно Info или Warnings, а Debug полезен, когда нужно увидеть SQL-запрос или понять, на каком шаге зависла выборка объектов.
Какие данные нужны программе
Таблица изображений и таблица объектов
В наиболее распространённой схеме CPA ожидает таблицу изображений и таблицу объектов. В первой одна строка соответствует полю зрения или другому изображению. Там находятся уникальный идентификатор изображения, пути и имена файлов каналов, метаданные эксперимента и измерения уровня изображения. Во второй одна строка соответствует объекту, например клетке, ядру или колонии. Она должна содержать ссылку на изображение, идентификатор объекта, координаты X и Y центра и любые дополнительные измерения, которые затем могут использоваться в визуализациях или классификации.
При классификации на уровне изображений объектная таблица не обязательна, но это отдельный режим. В properties-файле задаётся classification_type = image, а также размеры изображения. Для классической клеточной классификации нужна объектная таблица с координатами. Эти координаты критичны: по ним программа вырезает tile вокруг конкретного объекта и показывает его пользователю. Если X/Y относятся не к центроиду, перепутаны или измерены в другой системе координат, Classifier будет демонстрировать соседние структуры, что незаметно портит обучающую выборку.
SQLite, MySQL и CSV
CPA умеет работать с MySQL, SQLite и наборами CSV, превращаемыми во внутреннюю SQLite-базу. MySQL имеет смысл, когда эксперимент очень большой, база должна быть доступна с нескольких компьютеров или её обслуживает отдельный сервер. SQLite проще: база лежит одним файлом и не требует сервера. Для локального анализа это часто самый удобный вариант, однако одновременный доступ из нескольких процессов и некоторые тяжёлые запросы лучше переносятся серверной СУБД.
Есть два способа войти в работу через CSV. Если CellProfiler сформировал setup SQL и несколько CSV-файлов через ExportToDatabase, CPA может по этому SQL создать локальную SQLite-базу; файлы должны оставаться рядом с setup-файлом. Второй вариант — указать отдельные CSV для image- и object-таблиц. При первом запуске импорт может занять заметное время, потому что приложение фактически строит базу. Это не ошибка, если журнал продолжает показывать активность и диск занят; повторный старт обычно быстрее, потому что созданную базу не нужно собирать заново.
Пути к изображениям и каналы
В image-таблице для каждого канала обычно есть столбец с каталогом и столбец с именем файла. Properties-файл связывает эти колонки с параметрами image_path_cols и image_file_cols. Количество пар должно соответствовать каналам. Дополнительно можно задать читаемые имена каналов через image_names и цвета через image_channel_colors. Цвета влияют только на отображение: исходные значения пикселей не перекрашиваются и измерения не пересчитываются.
Параметр image_url_prepend полезен при переносе данных. Он добавляется перед путями из таблицы, поэтому один и тот же набор метаданных можно перенаправить на другой локальный каталог или HTTP-хранилище, не переписывая каждую строку базы. На практике это удобно, когда вычисления проводились на сервере, а CPA запускается на рабочей станции. Если изображения не открываются, нужно проверять итоговый путь целиком: слэш между префиксом и каталогом, регистр символов, наличие пробелов и доступность файла по указанному протоколу.
В документации перечислен широкий набор растровых типов, включая PNG, JPEG и TIFF. Для микроскопии важнее не формальное расширение, а то, как сохранены каналы. CPA традиционно ожидает монохромные каналы и собирает цветное представление на экране. В ветке 3.x сначала используется загрузчик на базе imageio, а при необходимости задействуется Bio-Formats; параметр force_bioformats позволяет принудительно выбирать Bio-Formats. Если редкий формат открывается неверно, это один из первых параметров, которые стоит проверить.
Properties-файл: что в нём действительно важно
Properties-файл — обычный текстовый конфигурационный файл, который CPA просит выбрать при запуске. Если данные получены из CellProfiler, почти готовый вариант создаёт ExportToDatabase. Вручную его тоже можно написать: каждая настройка записывается в форме поле = значение, строки с решёткой используются как комментарии, а порядок большинства полей не принципиален. Редактировать файл нужно текстовым редактором; документы RTF или DOC не подходят.
Минимальный практический набор обычно включает тип и местоположение базы, имена таблиц, идентификаторы изображения и объекта, координаты объекта, колонки пути и имени файлов. Для планшетных экспериментов добавляются plate_id и well_id, для удобного интерфейса — имена каналов и тип планшета, а для Classifier — размер tile и список признаков, которые не надо использовать в модели. Смысл конфигурации лучше понимать как контракт между схемой данных и приложением: CPA не угадывает, что колонка с именем ImgNo является ключом, пока это явно не указано.
image_tile_size задаёт размер квадратного фрагмента вокруг объекта. Слишком маленькое значение обрезает контекст и может скрывать важную морфологию; слишком большое увеличивает расход памяти, замедляет загрузку и показывает много соседних клеток. Для стартовой настройки полезно выбрать размер немного больше типичного диаметра объекта, а затем проверить несколько полей в Classifier. Центральная точка tile указывает объект, который следует размечать, поэтому окружающие клетки нельзя использовать как основание для метки, если курсор указывает на другой объект.
classifier_ignore_columns — один из ключевых параметров качества модели. Идентификаторы, координаты, номера планшетов, номера полей и другие служебные значения не должны случайно стать признаками фенотипа. CPA автоматически исключает часть ключевых и нечисловых колонок, но дополнительные поля можно убрать списком или регулярными выражениями. Это особенно важно при скринингах, где положение на планшете коррелирует с обработкой: модель, увидев номер лунки, может «выучить» дизайн эксперимента вместо морфологии.
Фильтры и группы
Фильтр ограничивает набор изображений, из которого инструменты берут объекты или строят графики. В properties-файле фильтры задаются SQL-запросами, возвращающими ключи изображений. Можно, например, оставить только контрольные образцы, определённый планшет или набор генов. В интерфейсе Classifier есть пункт создания нового фильтра без ручного SQL: выбирается колонка, условие и при необходимости дополнительные ограничения. Такой фильтр существует в текущем сеансе и затем появляется в выпадающих списках инструментов.
Группа отвечает на другой вопрос: какие изображения следует считать одним экспериментальным образцом. Четыре поля зрения одной лунки обычно должны агрегироваться вместе, когда нужно получить результат на уровне лунки. В group SQL сначала возвращаются ключи изображений, затем колонки группировки. После этого Classifier может выбирать объекты из конкретной группы и формировать Score All на уровне группы, а не отдельных кадров. Ошибка в группировке приводит к статистически правдоподобным, но биологически бессмысленным итогам, поэтому логику групп нужно проверять на небольшом наборе до полного расчёта.
Установка и начало работы
Официальная страница распространения предлагает готовые сборки для Windows и macOS; стабильная ветка на момент подготовки материала обозначена как 3.0.5. Пользователю, которому нужен обычный анализ, разумнее начинать именно с готовой сборки, а не собирать программу из исходников. В Windows установщик создаёт исполняемый файл и ярлыки, в macOS приложение переносится в папку Applications. Запуск из исходников требует отдельного Python-окружения и набора зависимостей, а для некоторых путей загрузки изображений также Java/JDK, поэтому этот вариант имеет смысл в основном разработчикам и пользователям Linux.
Первый безопасный запуск лучше делать на официальном примерном наборе, а не на собственном многогигабайтном эксперименте. Пример включает properties-файл, изображения, image- и object-таблицы, setup SQL и готовую обучающую выборку. Он позволяет быстро проверить, что Classifier, графики и Image Gallery открываются, а затем сравнить структуру примера со своей базой. Если пример работает, а собственный набор нет, проблема почти наверняка в конфигурации, схеме таблиц или путях, а не в самой установке.
После старта CPA предлагает выбрать properties-файл. При успешной загрузке главное окно показывает сообщения о подключении и инструменты. На этом этапе не стоит сразу запускать Score All. Сначала откройте Table Viewer или Image Gallery, убедитесь, что строки и картинки соответствуют друг другу, затем проверьте Plate Viewer, если есть данные о лунках, и только потом переходите к модели. Такой порядок ловит наиболее дорогие ошибки до того, как они попадут в обучение.
Если интерфейс не открывает изображения, а таблицы читаются, проверьте отдельно путь к одному файлу из image-таблицы. Если изображение открывается вручную, сравните путь с тем, который формирует CPA. Если в CellProfiler были сохранены скорректированные изображения, но CPA показывает исходники, проблема часто в том, что путь к сохранённым скорректированным файлам не был записан в результаты. Для соответствующего SaveImages в CellProfiler нужно включить запись информации о файле и пути, иначе properties-файл просто не знает о новом наборе изображений.
Главное окно, журнал и SQL Query Tool
В главном окне нет большого центрального холста: это диспетчер инструментов и журнал. Кнопки запускают отдельные окна, которые можно держать рядом и использовать параллельно. Такой интерфейс сначала кажется фрагментированным, но у него есть преимущество: график, таблицу и классификатор можно разместить на разных мониторах, а переходы между ними сохраняют связь с теми же ключами изображения и объекта.
Через File доступно сохранение журнала, а через Logging — выбор уровня подробности. Если SQL-запрос в фильтре возвращает пустой результат, режим Debug помогает увидеть, какой запрос реально сформирован. При нормальной работе оставлять максимальный уровень постоянно не обязательно: длинный поток технических строк затрудняет поиск предупреждений и слегка увеличивает накладные расходы на интерфейс.
В Advanced находится SQL query tool. Он предназначен не для построения полноценного отчёта, а для быстрых проверок базы: посмотреть уникальные значения метаданных, убедиться, что нужная колонка существует, проверить количество строк или содержимое группы. Результат возвращается в табличном виде. Перед сложным фильтром полезно сначала выполнить его основу здесь и удостовериться, что она действительно выбирает ожидаемые изображения.

С SQL Query Tool нужно обращаться как с прямым доступом к базе. Небезопасные или тяжёлые запросы могут загрузить сервер, а изменяющие выражения способны повредить данные. Для исследовательской проверки обычно достаточно SELECT. Если база общая, лучше выдавать учётной записи CPA права чтения, а таблицы с результатами Classifier сохранять в отдельную рабочую схему или под контролируемым именем.
Image Gallery: быстрый просмотр всего эксперимента
Image Gallery создан для просмотра множества полей зрения как плиток. В верхней части можно запросить диапазон идентификаторов, одно изображение, все изображения или использовать фильтр. После Fetch верхняя область заполняется полями зрения, а нижняя может показывать отдельные сегментированные объекты из выбранного изображения. Это удобный мост между макроскопическим просмотром эксперимента и классификацией клеток.
Практический сценарий прост. Сначала загрузите ограниченный диапазон, например десятки изображений, а не всю базу. Оцените качество фокуса, экспозиции и сегментации. Затем правой кнопкой можно открыть выбранное поле в полном виде или запросить все объекты из него. Отдельные tiles перетаскиваются в Classifier, поэтому редкий фенотип можно находить визуально в Image Gallery и сразу добавлять как новый размеченный пример.
Для больших экранов размер миниатюр имеет значение. Параметр image_size может отличаться от image_tile_size: первый управляет полями зрения в Gallery, второй — фрагментами объектов. Увеличение обоих значений делает изображения удобнее для глаза, но одновременно повышает объём декодируемых данных. Если Gallery медленно прокручивается, разумнее уменьшить миниатюры и открывать сомнительные поля в Image Viewer.
Фильтры полезны для систематического контроля. Вместо случайного просмотра можно отдельно открыть отрицательные контроли, положительные контроли и экспериментальные условия. Если артефакт связан с краевыми лунками, температурой или конкретным планшетом, такой раздельный просмотр быстрее обнаружит закономерность, чем выбор случайных картинок из всей базы.
Image Viewer: проверка контекста и каналов
Image Viewer открывает конкретное поле зрения по идентификатору или из других инструментов. В заголовке могут отображаться планшет, лунка и ключ изображения, если эти поля определены в properties. Имена каналов становятся пунктами меню. Для каждого канала выбирается цвет, а сочетания отображаются как многоканальная композиция. Это визуальная операция и не меняет сами измерения в базе.
Панель Show controls управляет яркостью, масштабом и контрастом. Есть линейная и логарифмическая растяжка. Логарифмическое отображение помогает увидеть слабые структуры, но его нельзя воспринимать как доказательство сильного сигнала: даже узкий диапазон почти фоновых значений после растяжки может выглядеть ярко. Поэтому при принятии биологического решения изображение нужно сопоставлять с числовым измерением и, при необходимости, с нерастянутым видом.
Если Classifier уже обучен, Image Viewer может показывать классы объектов на одном поле. Это одна из наиболее полезных стадий проверки модели: вместо абстрактной метрики видно, какие конкретно клетки попали не в тот класс. Ошибочные объекты можно переносить в правильные bins и дообучать модель. Такой цикл «Score Image → визуальная проверка → исправление разметки → Train» часто эффективнее бесконечного увеличения случайной обучающей выборки.
Classifier: центральный инструмент машинного обучения
Что именно обучается
Classifier работает не как нейросеть, которая по умолчанию читает сырые пиксели. В обычном объектном режиме модель получает числовые признаки, уже измеренные в CellProfiler или другой системе. Это могут быть площадь, эксцентриситет, интенсивность каналов, текстурные показатели, радиальные распределения и другие колонки. Пользователь показывает примеры классов, а алгоритм ищет разделяющую структуру в этих измерениях. Поэтому качество исходной сегментации и набора признаков напрямую ограничивает итог: если нужный фенотип никак не отражён в измерениях, Classifier не сможет восстановить его из отсутствующей информации.
Окно начинается с bins классов и панели Fetch. В простом случае достаточно положительного и отрицательного класса, но поддерживается несколько фенотипов. Добавлять класс только потому, что «так выглядит аккуратнее», не стоит: дополнительные классы увеличивают сложность задачи и уменьшают число примеров на класс. Хорошая схема меток определяется тем, какой ответ нужен downstream-анализу, а не количеством визуальных вариаций, которые можно заметить глазами.
Первичная выборка через Fetch
Введите число объектов, оставьте режим random и выберите источник experiment, image, группу или фильтр. После Fetch в верхнем bin появятся фрагменты. Начинать с нескольких десятков удобно для проверки, но это не означает, что двадцати объектов достаточно для серьёзной модели. Размер выборки должен расти итеративно: сначала сформировать грубое разделение, затем целенаправленно находить трудные случаи и исправлять систематические ошибки.
Каждый tile относится к центральному объекту. При наведении программа показывает точку, указывающую объект разметки. Если в кадре несколько клеток, метку присваивают той, что под точкой, а не «общему впечатлению» от плитки. Если контекст мешает, измените image_tile_size. Для фенотипа, зависящего от соседства клеток, наоборот, tile может понадобиться больше, но тогда важно помнить: классификатор всё равно использует измерения строки объекта, а не картинку tile как дополнительный признак.
Перемещать объекты можно мышью и клавиатурой. Классы нумеруются слева направо; клавиши 1–9 ускоряют сортировку. Через контекстное меню можно выбрать все tiles, инвертировать выделение, удалить выбранные, убрать дубликаты и открыть полное изображение. Эти операции особенно удобны после нескольких раундов, когда пользователь работает уже не с чистой случайной выборкой, а с подборкой сомнительных предсказаний.
Обучение и выбор алгоритма
После того как примеры разнесены минимум по двум классам, нажимается Train. CPA поддерживает несколько типов модели: RandomForest, AdaBoost, SVC, GradientBoosting, LogisticRegression, LDA, KNeighbors, FastGentleBoosting и многослойный перцептрон Neural Network. Выбор не стоит превращать в соревнование алгоритмов без валидации. Для многих морфологических задач RandomForest даёт удобную стартовую точку, потому что работает с нелинейными разделениями и смешанными признаками. SVC чувствителен к масштабированию, логистическая регрессия полезна при относительно линейной структуре, а нейронная сеть требует особенно внимательной подготовки признаков и размера обучающей выборки.
Для Neural Network число скрытых слоёв и нейронов можно настраивать. Это не превращает CPA в систему deep learning по изображениям: речь идёт о MLP поверх числовых признаков. Увеличение сети без достаточной разметки создаёт риск переобучения. Если количество обучающих объектов небольшое, начинать стоит с более простых моделей и проверять стабильность на контролях.
FastGentleBoosting сохраняется как специализированный вариант для ограниченной обучающей выборки. Для него поле, которое у других моделей показывает число верхних признаков, используется для максимального числа правил. SQLite накладывает дополнительное ограничение на число правил, поэтому при очень большом значении и локальной базе этот вариант может упереться в технические пределы. Если важна масштабная модель, лучше оценить другие классификаторы или серверную базу.
Scaler, нулевые признаки и NaN
В Advanced можно включить Scaler. Он центрирует признаки к среднему нулю и масштабирует до стандартного отклонения один. Для алгоритмов, зависящих от расстояний или величины коэффициентов, это принципиально: площадь в сотнях пикселей не должна автоматически доминировать над нормированной текстурой только из-за числового масштаба. FastGentleBoosting является исключением из этой общей логики масштабирования в интерфейсе CPA.
Нулевой разброс — признак, одинаковый для всех объектов — информации не содержит. Classifier позволяет проверить такие колонки через Advanced → Check features. Их лучше исключать в properties или удалять на этапе нормализации. CPA также игнорирует объекты с NaN в используемых признаках. Если таких объектов много, это может неожиданно сократить выборку. Поэтому перед обучением полезно посчитать долю пропусков по ключевым измерениям, а не принимать уменьшившееся число объектов за «случайный» результат Classifier.
Evaluate: что означает оценка
Кнопка Evaluate проводит стратифицированную пятифолдную кросс-валидацию по текущей размеченной выборке и показывает classification report с precision, recall и F1 по классам либо confusion matrix. Это полезная проверка, но не окончательное доказательство качества. Если в bins лежат десятки почти одинаковых объектов из одного поля или одного контроля, кросс-валидация может выглядеть отлично и плохо переноситься на другой планшет. Самые убедительные тесты — независимые поля и биологические контроли, не использованные при построении тренировочного набора.
Редкие классы требуют отдельного внимания. Accuracy почти бесполезна, если положительных объектов один процент. В таком случае смотрите precision и recall нужного класса, confusion matrix и визуальный характер ложных срабатываний. Если false positives концентрируются в мусоре, мёртвых клетках или на краях изображения, проблему лучше решать измерениями и фильтрами качества, а не просто добавлять случайные отрицательные примеры.
Score Image и активное уточнение
Score Image классифицирует объекты одного изображения и показывает разметку поверх поля. Можно отображать классы цветом или номерами. Это быстрый способ проверить контролируемое поле, необычную лунку или результат с высоким enrichment. Сохранение самого изображения доступно в JPEG или PNG, но разметка классификаций в сохранённый файл в текущей логике инструмента не включается, поэтому для отчётности лучше сохранять числовые результаты отдельно и документировать снимок экрана при необходимости.
После первого Train в списке Fetch появляются варианты, связанные с предсказанными классами и трудными объектами. Это позволяет перейти от пассивного random sampling к активному уточнению. Наиболее ценные примеры — не сотня очередных очевидных отрицательных клеток, а граничные случаи, на которых модель регулярно ошибается. Перетаскивая их в правильный bin и снова нажимая Train, можно быстрее сформировать полезную разделяющую поверхность.

Score All и enrichment
Score All применяет текущую модель ко всем объектам выбранного набора. Результат содержит числа объектов по классам и enrichment на уровне изображения или группы. При наличии фильтров и групп перед расчётом открывается выбор, где можно ограничить набор и определить агрегацию. Для больших экспериментов это самый дорогой этап, поэтому тренировочный набор необходимо сохранить до запуска через File → Save Training Set.
Enrichment помогает ранжировать образцы не только по абсолютному числу «положительных» клеток. CPA использует вероятностную схему, в которой учитывается доля класса и общий объём наблюдений; в многоклассовом случае каждый фенотип рассматривается по отношению к остальным. Практически это означает, что лунка с десятью положительными клетками из двенадцати и лунка с десятью из двухсот не должны интерпретироваться одинаково. Однако enrichment не отменяет биологическую проверку: артефакт сегментации способен систематически увеличить долю класса и стать «топовым хитом».
Результат Score All открывается в Table Viewer. Отсортируйте столбец enrichment, затем откройте изображения верхних и нижних значений. Если высокие позиции визуально однородны и соответствуют ожидаемому фенотипу, модель ведёт себя разумно. Если наверху появляются поля с дефокусом, очень высокой плотностью, обрезанными клетками или мусором, нужно вернуться к признакам и фильтрам, а не пытаться «исправить» итог порогом после классификации.
Table Viewer: числовой результат без отрыва от изображений
Table Viewer открывает CSV или таблицу базы и также используется как окно результатов Classifier. Столбцы можно сортировать кликом, повторный клик меняет направление. Shift-клик позволяет формировать многоуровневую сортировку, когда сначала данные группируются по одному признаку, а затем по другому. В статусной строке показываются сводные статистики выбранной числовой колонки, что удобно для быстрой проверки диапазона, среднего и разброса.
Двойной клик по заголовку строки открывает связанное изображение или набор изображений группы. Это одно из отличий CPA от универсальной таблицы: число остаётся привязанным к источнику. В скрининге можно отсортировать enrichment или интенсивность, открыть несколько экстремальных строк и сразу понять, это реальный биологический эффект или техническая проблема.
Через View → Show/hide columns можно скрыть ненужные столбцы. Это влияет на последующее сохранение CSV: скрытые колонки не записываются. Поэтому перед экспортом результата стоит проверить видимость столбцов, особенно если временно прятались ключи изображения или метаданные. CSV можно загрузить в Viewer, а затем сохранить в базу; наоборот, таблицу базы можно выгрузить на диск. При записи в БД есть вариант временной таблицы на текущий сеанс, что удобно для передачи результата в Plate Viewer без засорения схемы постоянными таблицами.
Plate Viewer: поиск пространственных эффектов
Plate Viewer раскладывает числовую величину по физической геометрии планшета. Поддерживаются 96-, 384- и 1536-луночные форматы, а также 5600-точечная microarray-сетка. Это особенно ценно для high-content screening: статистическая аномалия, которая выглядит случайной в таблице, на карте планшета может сразу превратиться в характерный край, полосу, градиент или дефект отдельного ряда.

Слева выбирается Data source, затем Measurement и метод агрегации. Доступны mean, sum, median, standard deviation, коэффициент вариации, minimum и maximum. Агрегацию нужно подбирать к смыслу измерения. Если колонка уже является средним по изображению, а в лунке четыре поля зрения, mean даст среднее этих четырёх значений. Он не станет автоматически средним по всем клеткам лунки. Для пер-объектных данных смысл может быть другим, поэтому всегда важно понимать уровень таблицы.
Color Map связывает величину с цветом. Цветовая шкала под планшетом имеет ручки, которые можно двигать. В режиме RESCALE диапазон между ручками растягивается на всю палитру, в CLIP значения за пределами диапазона обрезаются, а сама палитра не перераспределяется. Такая настройка полезна при выбросах, но легко вводит в заблуждение при сравнении разных планшетов. Для сравнительного QC лучше сохранять одинаковые пределы шкалы или явно фиксировать, что они были изменены.
Правый клик по лунке показывает ключи изображений, а выбор ключа открывает Image Viewer; двойной клик может открыть все поля этой лунки. Поэтому Plate Viewer хорошо работает как инструмент расследования: сначала виден пространственный паттерн, затем пользователь проваливается до конкретного поля и клетки.
Одновременно можно показать несколько планшетов. Это помогает сравнить повторяемость batch-эффекта: если красная полоса появляется на одном краю всех планшетов, причина вероятнее техническая, чем биологическая. В больших скринингах имеет смысл строить отдельные карты для числа объектов, фокуса, интенсивности каналов и classifier enrichment. Совпадение паттернов между ними часто объясняет «хиты», которые иначе выглядели бы убедительно.
Режим well shape «image» подставляет миниатюры изображений вместо цветных ячеек, но документация прямо предупреждает, что он может обновляться очень медленно, поскольку для каждой лунки приходится загружать полный файл. Его лучше использовать на одном планшете и максимизированном окне, а не пытаться отобразить так десятки планшетов одновременно.
Scatter Plot: связь двух измерений и выделение объектов
Scatter Plot строит диаграмму рассеяния по двум числовым колонкам. Для каждой оси выбираются таблица и измерение, отдельно задаётся линейный или логарифмический масштаб. Фильтр ограничивает точки. После Update Chart доступны стандартные действия Home, Back, Forward, Pan, Zoom-to-rect и сохранение графика как изображения.
Когда pan и zoom выключены, мышь используется для свободного выделения точек. Shift добавляет область к выделению, Alt вычитает. Контекстное меню позволяет запросить изображения выбранных точек, а затем открыть конкретный ключ в Image Viewer. Благодаря этому Scatter Plot становится не просто графиком корреляции, а способом «гейтить» популяцию и проверять, что лежит в необычном хвосте распределения.
На очень большой базе обновление диаграммы может занимать долгое время или завершаться неудачно. Правильный ответ — не нажимать Update повторно несколько раз, а сначала сузить фильтр, построить график по representative subset и убедиться, что выбранные колонки действительно нужны. Если необходимо работать со всеми объектами, агрегируйте часть признаков на уровне изображения или лунки и исследуйте более компактную таблицу.
Histogram Plot: распределения и контроль популяций
Histogram Plot показывает распределение одной числовой колонки. Пользователь выбирает таблицу, измерение, число bins, масштаб осей и фильтр. Для флуоресцентных интенсивностей логарифмический X часто делает видимыми несколько популяций, скрытых в длинном правом хвосте. Однако лог-преобразование следует применять осознанно: нулевые и отрицательные значения требуют отдельной интерпретации.

Гистограмма полезна до обучения Classifier. Если ключевой признак уже даёт чётко двугорбое распределение, возможно, фенотип можно описать простым threshold и сделать его прозрачнее. Если же популяции перекрываются по каждому одиночному признаку, но отличаются комбинацией формы, текстуры и интенсивности, тогда supervised model действительно оправдана.
Для QC гистограмму удобно сохранять в workspace вместе с фильтром контролей. При загрузке нового планшета тот же вид можно восстановить и быстро сравнить форму распределения. Нужно только следить за названиями колонок: если в новой таблице отсутствует сохранённое измерение, CPA может подставить первое доступное, что создаст правдоподобный, но совершенно другой график.
Density Plot: плотность вместо облака миллионов точек
Density Plot нужен, когда обычный scatter становится нечитаемым из-за наложения большого количества точек. Выбираются две числовые колонки, масштабы X/Y, grid size и цветовая карта. Grid size задаёт число ячеек по каждой оси: значение 50 даёт сетку 50×50, а 100 — 100×100. Чем выше сетка, тем подробнее структура, но тем больше вычислений и выше чувствительность к шуму в разреженных областях.
На практике Density Plot хорошо показывает основную «массу» популяции и отдельные острова. Если редкий фенотип занимает небольшой кластер, можно сначала заметить его как локальное уплотнение, затем уточнить область другими инструментами. При этом цветовая шкала плотности не является вероятностью класса. Она отражает частоту точек в ячейках, поэтому биологическую интерпретацию всё равно нужно подтверждать исходными изображениями.
Box Plot: сравнение распределений и выбросов
Box Plot строит box-and-whisker представление одного или нескольких измерений. Можно выбрать одну колонку или несколько через Select Multiple, задать способ группировки по X и применить фильтр. Коробка показывает 25-й и 75-й процентили, линия внутри — медиану, усы простираются до крайних точек в пределах 1,5 межквартильного размаха, а более удалённые значения отображаются отдельными маркерами.

Это полезно для сравнения контролей и условий, особенно когда среднее нестабильно из-за выбросов. Но box plot не показывает мультимодальность так хорошо, как гистограмма или density. Если два условия имеют похожую медиану, но одно содержит две биологические субпопуляции, коробки могут выглядеть почти одинаково. Поэтому Box Plot разумно использовать вместе с другими представлениями, а не как единственный итог анализа.
Normalization Tool: подготовка признаков перед анализом
Normalization Tool создаёт новую таблицу с нормализованными и, при необходимости, отфильтрованными измерениями. В окне выбирается исходная таблица и конкретные признаки. Затем добавляются шаги нормализации, задаётся имя выходной таблицы и выбирается, сохранять ли нормализованные значения и сами коэффициенты. Это делает подготовку данных воспроизводимой внутри той же базы, не заставляя экспортировать таблицу во внешний скрипт для каждого изменения.
На скрининговых данных нормализация часто должна учитывать структуру планшета, например соседние лунки или контрольные популяции. В интерфейсе доступна нормализация через статистику соседей с выбором медианы и геометрии окна. Этот инструмент нельзя применять механически: если биологический эффект сам образует пространственный кластер, локальная нормализация способна частично его убрать. Перед массовой обработкой проверьте несколько планшетов и сравните raw и normalized distributions.
Normalization Tool полезен и для очистки набора признаков. Нулевой разброс, выраженные технические масштабы и некоторые нечисловые или служебные поля мешают классификации и dimensionality reduction. Хорошая практика — сохранить исходную таблицу неизменной, а подготовленный набор записать под новым именем. Тогда результат можно воспроизвести, а при сомнениях вернуться к сырым измерениям.
Dimensionality Reduction: поиск структуры в сотнях признаков
Инструмент Dimensionality Reduction появился в ветке 3.x и предназначен для проекции многомерных объектов в небольшое число компонент. Доступны PCA, SVD, Gaussian Random Projection, Sparse Random Projection, Factor Analysis, Feature Agglomeration и t-SNE. После выбора метода нажимается Update Chart, а компоненты выбираются для X и Y. CPA нормализует измерения перед расчётом этого модуля.

Для PCA подписи осей показывают долю объяснённой дисперсии. Это помогает понять, сколько структуры захватывают первые компоненты. SVD по смыслу близок, но не центрирует данные и может быть более экономным по памяти на больших наборах. Random Projection сохраняет расстояния приближённо и полезна как компромисс скорости; t-SNE ориентирован на локальную структуру и визуализацию кластеров, но расстояния между далёкими кластерами нельзя интерпретировать как линейный биологический эффект.
Режим Scores показывает отдельные объекты, а Loadings — вклад исходных измерений там, где метод это поддерживает. Наведение на точку Scores отображает ключ изображения и объекта. Лассо выделяет область; контекстное меню открывает соответствующие объекты, а при открытом Classifier выбранные элементы можно отправить прямо в него. Это сильный сценарий для поиска редкого фенотипа: сначала обнаружить отдельный кластер в PCA/t-SNE, затем посмотреть его изображения и использовать подтверждённые объекты как примеры класса.
Фильтр ограничивает отображаемые объекты, но документация предупреждает, что сам reduction может использовать все объекты набора. Поэтому фильтр на графике не всегда означает, что проекция обучена только на отфильтрованных строках. Если требуется строго сравнить две подвыборки в собственной системе координат, безопаснее создать отдельную таблицу или базу с нужным subset и затем построить reduction заново.
Workspaces: повторяемый контроль одних и тех же метрик
Workspace сохраняет конфигурацию открытых графиков и позволяет восстановить её позже либо применить к новому набору с той же схемой. Для регулярного контроля еженедельных планшетов это экономит время: можно один раз настроить гистограмму DNA content, scatter для двух QC-метрик и Plate Viewer с фокусом, а затем загружать тот же workspace для следующей серии.
Сохранение выполняется через File → Save workspace, восстановление — File → Load workspace. Table Viewer и Classifier не входят в сохраняемую конфигурацию так же полно, как графики, поэтому обучающую выборку Classifier нужно сохранять отдельно. Workspace следует воспринимать как шаблон визуального анализа, а training set — как отдельный артефакт модели.
Главный риск переносимости — несовпадающие названия измерений. Если сохранённый график ссылается на колонку, которой в новом датасете нет, CPA может заменить её первой доступной колонкой. Поэтому после загрузки workspace нужно проверить подписи осей и measurement в каждом окне, а не считать внешний вид гарантией, что отображаются те же данные.
Полный сценарий: от CellProfiler до списка хитов
Шаг 1. Подготовить измерения
В CellProfiler соберите pipeline, который стабильно сегментирует объекты и измеряет признаки, относящиеся к фенотипу. При экспорте через ExportToDatabase сохраните image- и object-таблицы, пути к исходным или скорректированным изображениям, метаданные планшета/лунки и coordinates объектов. Включайте только те объекты, которые действительно должны участвовать в downstream-анализе: если debris и края изображения заведомо неинтересны, их лучше отфильтровать ещё на этапе измерения или пометить отдельным QC-признаком.
Шаг 2. Проверить связь строк с картинками
Запустите CPA, загрузите properties и откройте несколько строк Table Viewer. По разным ключам откройте изображения. Затем через Image Gallery посмотрите несколько полей. Проверьте, что нужные каналы соответствуют своим цветам и что tile указывает на ожидаемый объект. Ошибка здесь опаснее ошибки модели: неправильная привязка X/Y или файлов создаёт согласованную, но ложную обучающую выборку.
Шаг 3. Сделать QC до обучения
В Plate Viewer отобразите число объектов, фокус или другие доступные технические измерения. В Histogram и Scatter посмотрите распределения контролей. Если обнаружены явно дефектные лунки или поля, создайте фильтр исключения. Не пытайтесь научить Classifier распознавать дефокус, который можно заранее удалить по простой QC-метрике: это расходует разметку и усложняет интерпретацию.
Шаг 4. Собрать начальный training set
Откройте Classifier, создайте минимальное число содержательных классов и Fetch случайные объекты из контролируемого набора. Разнесите их по bins, удаляя неоднозначные tiles. После первого Train сохраните training set. Оцените модель кнопкой Evaluate, но не останавливайтесь на красивом F1: используйте Score Image на нескольких независимых контролях.
Шаг 5. Уточнять на ошибках
Выбирайте объекты, которые модель относит к положительному классу, и проверяйте ложные срабатывания. Добавляйте эти ошибки в правильные bins. Если трудные случаи образуют отдельный артефактный тип, возможно, нужен третий класс, но сначала спросите, не проще ли убрать их QC-фильтром. Модель должна решать биологическую задачу, а не компенсировать весь технологический шум эксперимента.
Шаг 6. Score All и визуальная верификация
Когда качество на контролях стало приемлемым, сохраните training set ещё раз и запускайте Score All на нужной группе. Отсортируйте результат по enrichment, откройте несколько верхних, средних и нижних образцов. Перенесите временную таблицу в Plate Viewer и проверьте, нет ли пространственного паттерна, указывающего на edge effect или batch effect. Только после этой проверки экспортируйте CSV или сохраняйте таблицу в базе.
Шаг 7. Зафиксировать воспроизводимость
Сохраните properties, training set, используемые фильтры/группы и версию исходной схемы измерений вместе с результатом. Workspace добавьте, если анализ включает стандартный набор графиков. При повторении на новой партии сначала проверьте, что названия и смысл колонок не изменились. Даже добавление нового измерительного модуля в CellProfiler способно изменить набор признаков Classifier, если он автоматически использует все допустимые числовые колонки.
Сценарий редкого фенотипа
Редкий класс плохо обучать чисто случайной выборкой: если фенотип встречается в одной клетке на тысячу, сотни Fetch random могут не дать ни одного положительного примера. Здесь полезна комбинация Dimensionality Reduction, Scatter Plot и Image Gallery. Сначала найдите участок feature space, где появляются необычные объекты. Затем откройте изображения выделенных точек. Подтверждённые клетки перетащите в отдельный bin Classifier.
После первого грубого обучения запросите у Classifier объекты, которые он считает положительными. Теперь каждое ложное срабатывание информативно: оно показывает, какая морфология конкурирует с редким фенотипом. Размечайте такие ошибки как отрицательные и повторяйте цикл. Такой active-learning-подобный подход уменьшает число бессмысленных случайных примеров.
При редком классе особенно важна независимая оценка precision. Если в реальности положительных объектов 0,1 %, даже небольшой false-positive rate породит больше ложных объектов, чем истинных. Поэтому после Score All нужно вручную проверить значимую долю предсказанных positives и, если возможно, использовать отдельный биологический маркер или контроль. CPA облегчает эту проверку благодаря переходу от score к изображениям, но не отменяет её.
Производительность и работа с большими экспериментами
CPA рассчитан на high-throughput данные, но интерактивность не означает, что любой запрос мгновенно работает на десятках миллионов строк. Самые тяжёлые операции — формирование большой выборки объектов, построение графиков по всей object-таблице, загрузка множества полноразмерных изображений, dimensionality reduction и Score All. В руководстве прямо отмечено, что Scatter Plot и Density Plot могут обновляться долго на большой базе.
Первый способ ускорения — не аппаратный, а логический: использовать фильтры. Если вы изучаете один планшет, один тип контроля или выбранную партию, не передавайте в график весь эксперимент. Второй — работать на правильном уровне агрегации. Для QC планшета часто достаточно per-image или per-well значений; миллионы per-object точек не дают дополнительной пользы на этой стадии.
Третий способ — не завышать размеры визуальных tiles. Большой image_tile_size увеличивает декодирование изображений и память. Четвёртый — хранить изображения на быстром локальном диске или сетевом хранилище с предсказуемой задержкой. Таблица может открываться быстро, а Image Gallery тормозить исключительно из-за сетевых TIFF. Пятый — выбирать базу под режим работы: SQLite прекрасен для одного локального исследователя, MySQL удобнее для общего сервера и очень крупных наборов.
Score All лучше запускать после финальной проверки модели и с разумным фильтром. Не существует полезного универсального времени выполнения: оно зависит от числа объектов, числа признаков, алгоритма, базы, диска и сети. Если расчёт занимает долго, ориентируйтесь на журнал и загрузку системы, а не на случайные цифры из чужого компьютера. При повторяемом массовом анализе имеет смысл сначала протестировать полный pipeline на одном планшете и только затем масштабировать.
Dimensionality Reduction также требует компромисса. PCA и случайные проекции обычно удобнее для первого осмотра больших наборов; t-SNE может быть значительно тяжелее и не обязателен для каждого эксперимента. Если цель — найти грубые выбросы, проще начать с PCA. Если PCA выявляет интересный кластер, уже потом можно строить более локальную нелинейную проекцию на подготовленной подвыборке.
Проверка схемы данных перед серьёзным анализом
Большинство неприятных проблем в CPA лучше ловить не после часа Score All, а в первые десять минут. Начните с image-таблицы: возьмите несколько image ID из разных планшетов и убедитесь, что они уникальны, что plate/well metadata заполнены ожидаемо и что path/filename действительно ведут к тем файлам, которые анализировал CellProfiler. Затем проверьте object-таблицу: у одного изображения должно быть много строк объектов, image ID должен существовать в image-таблице, object ID — различаться внутри изображения, а координаты лежать внутри фактических размеров кадра.
Следующий тест — визуальный. Откройте один image ID в Image Viewer, затем найдите один из его объектов через Classifier и сопоставьте tile с тем же местом на полном изображении. Повторите на нескольких случайных изображениях и по разным краям поля. Такой тест одновременно проверяет связь таблиц, X/Y coordinates, масштаб изображения и корректность channel paths. Если хотя бы один объект систематически смещён, к машинному обучению переходить нельзя.
После геометрии проверьте числовые признаки. Выберите несколько понятных измерений: площадь ядра, среднюю интенсивность одного канала, объектный count на уровне изображения. Постройте Histogram и Scatter, а затем сравните экстремальные точки с картинками. Если самая большая «площадь ядра» соответствует не крупному ядру, а маленькому debris, проблема находится upstream в segmentation или в неверно выбранной колонке. CPA удобен именно тем, что позволяет быстро раскрыть такие несоответствия.
Полезно также проверить кардинальности. Число объектов на изображение не должно неожиданно обнуляться для целого планшета, если изображения визуально содержат клетки. Количество строк в image-таблице должно соответствовать ожидаемому числу полей зрения. Если в эксперименте четыре sites на well, группировка well должна собирать именно четыре изображения там, где данные полные. Любое систематическое отличие сначала объясняют, а уже потом принимают как допустимое.
Наконец, просмотрите имена столбцов. Запятые в именах не подходят для CPA, а неочевидные служебные колонки лучше документировать до запуска Classifier. Для большой команды полезно хранить рядом с properties краткую схему: какие поля являются keys, какие — metadata, какие — image measurements, какие — object features и какие сознательно исключены из обучения. Это уменьшает риск, что через месяц другой исследователь включит в модель технический признак, который первоначально был специально убран.
Как выбирать тип Classifier без лишнего перебора
Список алгоритмов в CPA достаточно широкий, но полезный процесс выбора может быть простым. Сначала подготовьте один и тот же training set, включите корректное масштабирование там, где оно нужно, и сравнивайте модели на одинаковых независимых контролях. Менять одновременно алгоритм, набор признаков и разметку нельзя: если качество выросло, вы не поймёте, что именно помогло.
| Тип | Когда разумно попробовать | На что смотреть |
|---|---|---|
| RandomForest | Стартовая модель для нелинейных сочетаний морфологии и интенсивности | Стабильность на новых полях, важность top features |
| LogisticRegression / LDA | Когда ожидается относительно простое разделение классов | Масштабирование и линейность границы |
| SVC | Когда классы разделимы в многомерном feature space, но не одной колонкой | Scaler и переносимость на независимый batch |
| KNeighbors | Для локально компактных классов и понятного feature space | Чувствительность к масштабу и плотности sampling |
| GradientBoosting / AdaBoost | Для последовательного уточнения ошибок слабых правил | Переобучение на малом training set |
| FastGentleBoosting | Когда важна работа с ограниченной разметкой и интерпретируемыми правилами | Число правил и ограничения SQLite |
| Neural Network | Когда признаков и размеченных объектов достаточно для более сложной нелинейности | Размер скрытых слоёв, scaler, переобучение |
RandomForest часто удобен как baseline не потому, что гарантированно «лучший», а потому, что легко схватывает взаимодействия между признаками без требования линейной границы. Если простая линейная модель даёт почти такой же результат, это хороший знак: биологический фенотип может быть описан компактнее и прозрачнее. Если только сложная модель показывает высокий score, стоит проверить, не использует ли она технические корреляции.
Top features полезны как диагностический сигнал. Если главным признаком внезапно становится номер изображения, координата X или метаданные лунки, это утечка. Если среди верхних features находятся ожидаемые биологические измерения — например, nuclear area, specific-channel intensity и texture — интерпретация выглядит правдоподобнее. Но ranking features не доказывает причинность: коррелирующий измерительный показатель может быть лишь прокси другого процесса.
При сравнении моделей держите отдельный набор изображений вне training set. Нельзя выбирать алгоритм только по Evaluate на тех же размеченных объектах и затем считать полученную метрику независимой. Лучше выделить несколько control wells или целый plate, не используемый при разметке, и сравнить per-cell confusion, visual errors и конечный well-level separation.
Если модель очень чувствительна к выбору нескольких training objects, это важный сигнал нестабильности. Повторите обучение с немного другой выборкой или добавьте разнообразные boundary cases. Стабильная модель должна сохранять общий pattern ошибок. Большие скачки после нескольких tiles означают, что training set ещё слишком мал или классы плохо определены.
Как не внести смещение при ручной разметке
Интерактивная разметка удобна, но человек тоже создаёт bias. Самая распространённая ошибка — выбирать только очевидные positives и очевидные negatives. Такая выборка делает training удобным, но оставляет модель без примеров переходной зоны. После первого Train специально ищите объекты, на которых вы сомневаетесь, и принимайте для них последовательное правило: либо исключайте неоднозначные примеры из обучения, либо заранее определите, к какому biological class они относятся.
Вторая ошибка — разметка по контексту, которого нет в features. Исследователь может видеть соседние клетки, общий рисунок колонии или положение в ткани, тогда как object table содержит только признаки центрального ядра. В этом случае модель принципиально не сможет воспроизвести экспертное решение. Выход — добавить соответствующие измерения upstream, использовать area/context features, изменить объект анализа или выбрать инструмент, который обучается непосредственно по изображению.
Третья ошибка — скрытая информация об условиях. Если пользователь знает, что конкретная лунка является положительным контролем, он может неосознанно размечать сомнительные клетки «в сторону» ожидаемого результата. Для честной разметки полезно по возможности скрывать treatment metadata во время первичного обучения и смотреть только image phenotype. Контроли нужны для проверки, но не должны подменять решение о каждой клетке.
Четвёртая ошибка — слишком раннее расширение числа классов. Если два фенотипа трудно различить даже эксперту и они не имеют отдельного downstream смысла, объединение может дать более устойчивую модель. Добавляйте класс тогда, когда он биологически нужен и для него существуют повторяемые признаки, а не потому, что интерфейс позволяет создать ещё один bin.
Пятая ошибка — зависимость от одного acquisition batch. Даже при одинаковом протоколе могут меняться фокус, illumination, staining и density. Training set должен содержать разумное разнообразие этих условий, если модель будет применяться к ним. Если batches очень разные, сначала нормализуйте данные и убедитесь, что controls сопоставимы; иначе classifier будет разделять партии вместо фенотипов.
Интерпретация пространственных и batch-эффектов
Plate Viewer делает технические эффекты особенно наглядными, но важно правильно читать их геометрию. Классический edge effect выглядит как систематическое отличие крайних рядов или колонок. Полоса по одному ряду может указывать на pipetting или imaging issue. Градиент от одного угла к другому бывает связан с illumination, температурой, временем обработки или порядком сканирования. Повторяемость одного и того же рисунка на нескольких plates усиливает подозрение на техническую причину.
Сначала смотрите на простые QC-measurements: object count, focus, mean intensity базового канала, background. Затем сравнивайте с classifier enrichment. Если enrichment повторяет карту фокуса, модель скорее реагирует на качество изображения. Если pattern сохраняется после исключения плохих полей и не коррелирует с QC, биологическая интерпретация становится убедительнее.
Batch effect не обязательно имеет пространственную форму. Разные дни, операторы, партии реагента или настройки микроскопа могут смещать все wells одного plate. Для такого случая полезны Histogram и Box Plot по controls с фильтрами batch. Если отрицательный контроль в одном batch целиком сдвинут относительно другого, объединять данные без нормализации опасно. Сначала нужно понять, влияет ли сдвиг на те же features, которые Classifier использует для фенотипа.
Нормализация по plate neighbors может убрать локальный дрейф, но она не является универсальной коррекцией. Если treatment layout неслучаен и соседние wells биологически похожи, локальная медиана может поглотить настоящий сигнал. Надёжнее иметь controls, распределённые по plate, и сравнить несколько нормализационных стратегий на заранее известных положительных/отрицательных условиях.
При публикационном анализе сохраняйте raw и normalized результаты. Plate map после нормализации должен быть воспроизводим из зафиксированных параметров. Если цветовая шкала вручную clipped, запишите диапазон. Иначе две визуально похожие карты могут на самом деле иметь разные масштабы, а различия окажутся результатом настройки отображения.
Организация проекта и воспроизводимость
Удобная структура проекта отделяет неизменяемые исходники от производных результатов. В каталоге эксперимента можно держать исходные изображения, exported measurements, properties, training sets, workspaces и exports в отдельных подпапках. CPA не требует именно такой структуры, но она облегчает перенос и аудит. Пути в properties лучше делать относительными там, где это возможно, либо использовать единый image_url_prepend.
Properties-файл следует версионировать как код. Изменение classifier_ignore_columns, фильтра SQL или group definition может радикально изменить результат даже при том же training set. Хорошая практика — копировать конфигурацию с коротким описанием изменения либо хранить её в системе контроля версий. Сам training set также нужно именовать по версии, особенно после нескольких раундов active refinement.
Для результатов Score All сохраняйте не только финальный CSV, но и информацию о модели: тип classifier, включён ли scaler, число/структура hidden layers для MLP, список classes и дата training set. Если исследование повторяется через несколько месяцев, это позволяет отличить изменение biology от изменения настройки анализа.
Workspace удобен для визуальной воспроизводимости, но не заменяет письменное описание filters и axes. После загрузки на другой набор обязательно сверяйте measurement names. Для критических графиков лучше дополнительно сохранить screenshot или exported image и CSV, чтобы можно было сравнить, что новый workspace действительно строит тот же вид.
Если база MySQL общая, заранее договоритесь о naming temporary и permanent tables. Table Viewer умеет создавать временные таблицы текущего сеанса, а Classifier может писать class table. Не используйте имена production tables для экспериментальных результатов. Для чувствительных данных разумно выдавать CPA учётные данные с минимальными правами, необходимыми для чтения и заранее определённой записи результатов.
Особенности современных наборов и 3D-данных
Текущая стабильная ветка 3.0.5 включает исправления, связанные с визуализацией 3D datasets и scoring. Это полезно, если upstream pipeline уже формирует measurements для объёмных данных. Однако CPA следует воспринимать прежде всего как аналитический слой над измерениями, а не как полноценный 3D segmentation environment. Сложное редактирование объёмных масок, рендеринг meshes и нейросетевую сегментацию обычно выполняют другими инструментами до CPA.
Для 3D особенно важно, какие координаты и projection используются при показе object tiles. Если expert phenotype зависит от структуры по Z, а Viewer показывает только ограниченное представление, ручная разметка может потерять контекст. Тогда стоит убедиться, что информативные 3D features уже вычислены upstream, а визуальная проверка действительно позволяет человеку различать классы.
Большие многоканальные объёмы также сильнее нагружают I/O. Даже если таблица компактна, Image Gallery может тратить время на чтение файлов. В таких проектах особенно полезны thumbnail-friendly storage, локальный cache и фильтры, ограничивающие число одновременно открываемых изображений.
Типичные ошибки и способы исправления
CPA запускается, но не видит изображения
Сначала проверьте одну строку image-таблицы и вручную составьте итоговый путь из image_url_prepend, path и filename. Убедитесь, что файл существует, регистр букв совпадает и сетевой ресурс доступен той же учётной записи, под которой работает CPA. Если данные были перенесены с другого компьютера, старый абсолютный путь почти всегда нужно заменить префиксом или обновить колонки. Если используется редкий формат, попробуйте force_bioformats.
Открывается не тот объект внутри tile
Проверьте cell_x_loc и cell_y_loc. Они должны указывать на координаты центра того же объекта, строка которого находится в object-таблице. Убедитесь, что X и Y не поменяны местами, измеряются в пикселях и относятся к тому же размеру изображения. Если картинка была ресайзена между измерением и просмотром, coordinates перестанут совпадать. После исправления проверяйте объект по центральной точке Classifier на нескольких случайных полях.
Classifier использует странные признаки
Посмотрите список колонок и исключите ID, координаты, номера полей, plate/well indexes, технические флаги и любые метаданные, которые кодируют экспериментальную группу. Добавьте их в classifier_ignore_columns. Затем через Advanced → Check features найдите признаки нулевой дисперсии. Если разные признаки имеют сильно разные масштабы, включите Scaler для моделей, которым масштаб важен.
Evaluate показывает высокий F1, а на новых данных модель плохая
Это типичный признак утечки или слишком однородной обучающей выборки. Если почти все tiles взяты из пары изображений, кросс-валидация делит похожие клетки между folds и переоценивает переносимость. Набирайте примеры из разных лунок, планшетов и независимых повторов. Проверьте, что class label не коррелирует с техническим столбцом, который случайно попал в features. Финальную оценку делайте на полях, не участвовавших в разметке.
Fetch возвращает пусто или очень мало объектов
Проверьте активный фильтр и группу. Слишком строгие условия могут не возвращать ни одного image key. Если фильтр написан SQL, выполните его основу в SQL Query Tool. Убедитесь, что ключи имеют тот же тип и формат, что в image-таблице. Если используется сложный кастомный запрос и ветка 3.x работает медленнее ожидаемого, в properties есть use_legacy_fetcher, возвращающий старую схему выборки для проблемных фильтров.
Scatter Plot или Density Plot зависает
Не строьте график по всей object-таблице, если достаточно subset. Примените фильтр по одному планшету или контролю, уменьшите число отображаемых объектов за счёт предварительной агрегации. Для Density Plot снизьте grid size. Если цель — связь двух признаков на уровне образца, создайте таблицу per-image/per-well и визуализируйте её вместо миллионов клеток.
Plate Viewer показывает неожиданные значения
Проверьте уровень исходной таблицы и метод агрегации. Mean per-image measurement, усреднённый по полям лунки, не равен mean по всем объектам, если число объектов в полях разное. Для количества объектов обычно уместнее sum, для интенсивности клеток — агрегировать object-таблицу напрямую или заранее получить корректную weighted statistic. X в лунке означает отсутствие данных в выбранной таблице, хотя изображения для неё всё ещё могут существовать.
После Load workspace отображается не то измерение
Сравните названия колонок текущего набора с теми, на которых workspace был сохранён. При отсутствии нужного столбца CPA может подставить другой. Пройдите по каждому окну, проверьте table, measurement, filter и масштабы. Workspace — шаблон конфигурации, а не строгая схема миграции данных.
Score All слишком долго работает
Остановитесь до массового запуска и оцените число строк, фильтры и алгоритм. Если нужно классифицировать только экспериментальную партию, не включайте исторические данные. Убедитесь, что обучение закончено: нет смысла повторять полный score после каждого небольшого изменения bins. Для локальной базы расположите SQLite и изображения на быстром диске. При очень крупной работе рассмотрите MySQL и более узкие группы.
В результатах много ложных positives из дефокусных полей
Не добавляйте бесконечно дефокус как отрицательный класс, если его можно определить QC-признаком. Создайте фильтр по фокусу и исключите явно плохие изображения до классификации. Затем перепроверьте модель на нормальных полях. Это делает биологическую интерпретацию чище: Classifier учится фенотипу, а не смешению фенотипа и качества съёмки.
Изображение выглядит ярким, хотя интенсивность низкая
Проверьте Contrast Stretch в Image Viewer. Linear и особенно Log могут визуально усилить слабый сигнал. Для качественной оценки сравните с None или фиксированным диапазоном, а для количественной — смотрите измерения. Интерфейсный stretch не является коррекцией данных и не должен использоваться как основание для изменения порога без числовой проверки.
Ограничения, которые важно учитывать
Главное ограничение CPA — зависимость от заранее подготовленной структуры данных. Это не редактор, в который достаточно перетащить произвольную папку фотографий и начать классификацию. Нужны измерения, ключи, coordinates и properties-файл. CellProfiler заметно упрощает подготовку, но при стороннем источнике таблиц схему придётся настроить вручную.
Второе ограничение — модель обычно работает по измеренным признакам. Если сегментация разрушила морфологию, нужный канал не был измерен или фенотип определяется сложной визуальной текстурой, отсутствующей в features, Classifier не сможет компенсировать пробел. Современная deep-learning модель по пикселям может быть сильнее в таких задачах, но потребует другой инфраструктуры и разметки.
Третье — интерактивные графики не предназначены для бездумного отображения всех объектов очень большой базы. Руководство предупреждает о долгих обновлениях Scatter и Density. Фильтрация, агрегация и грамотная схема БД являются частью рабочего процесса, а не необязательной оптимизацией.
Четвёртое — часть функций специализирована под микроскопические скрининги и multi-well layout. Это преимущество в профильной лаборатории, но избыточно для одиночной серии изображений без метаданных лунок. Plate Viewer теряет смысл, если нет структуры plate/well, а enrichment на группах требует корректно заданной группировки.
Пятое — визуальные преобразования в Viewer не являются анализом пикселей. CPA не предназначен для ретуши, удаления объектов с изображения, цветокоррекции фотографии или ручного монтажа. Он показывает изображения как источник доказательства для числовых данных, а не как холст для художественного редактирования.
Форматы результатов и обмен данными
Table Viewer читает и сохраняет CSV. Результаты Classifier можно выгружать в CSV, сохранять в таблицу базы и передавать в Plate Viewer. В properties параметр class_table позволяет записать пер-объектные классы в MySQL-таблицу, связав имя класса с image/object IDs. Это удобно, если дальше результаты обрабатываются в R, Python или BI-инструменте.
Training set нужно хранить как отдельный воспроизводимый артефакт. Его загрузка заменяет текущие bins, поэтому перед экспериментами с разметкой сохраняйте новую копию. Workspace храните отдельно: он отвечает за состояние графиков, а не за модель. Properties-файл — третий самостоятельный компонент, поскольку именно он определяет, к каким таблицам и файлам относится training set.
Экспорт графиков сохраняет изображение визуализации, но не заменяет числовой результат. Для статьи или отчёта полезно сохранять и PNG графика, и CSV/таблицу, из которой он построен. Тогда внешний вид можно воспроизвести, а статистику проверить независимо. Это особенно важно для Plate Viewer, где ручное масштабирование цветовой шкалы способно сильно изменить визуальное впечатление.
Сравнение с аналогами
Сравнивать CellProfiler Analyst с любым графическим редактором по количеству кнопок бессмысленно: его задача — исследовательская интерпретация измерений и классификация фенотипов, а не улучшение фотографии. Для требуемого контекста ниже отдельно показан ФотоМАСТЕР и две реальные альтернативы из биовизуализации — ilastik и QuPath.
| Программа | Сильная сторона | Что требуется на входе | Где ограничение заметнее всего |
|---|---|---|---|
| CellProfiler Analyst | Связка измерений, изображений, plate-QC и supervised классификации | Таблицы измерений, ключи и пути к изображениям | Нужна заранее подготовленная схема данных |
| ФотоМАСТЕР | Ретушь, замена фона, удаление объектов, эффекты и цветокоррекция | Обычная фотография | Не предназначен для клеточных измерений и high-content screening |
| ilastik | Интерактивная pixel/object classification, сегментация и batch prediction | Изображения и при object workflow маска/label image | Не даёт той же plate-centric связки с измерительной БД CPA |
| QuPath | Whole-slide и микроскопические изображения, аннотации, сегментация, object/pixel classification | Изображения, проект и при необходимости детекции/аннотации | Ориентирован на собственную модель проектов, особенно pathology/WSI |
CellProfiler Analyst и ФотоМАСТЕР
ФотоМАСТЕР — редактор фотографий: официально заявлены цветокоррекция, замена фона, удаление лишних объектов, пластика лица, коррекция фигуры, эффекты и экспорт распространённых форматов. Он работает с пикселями и визуальным видом конкретного снимка. CPA, наоборот, не «улучшает» изображение: оно используется как первичный источник, связанный с измерениями. Если нужно убрать прохожего, скорректировать портрет или заменить фон, CPA не подходит. Если нужно классифицировать клеточный фенотип по сотням измерений и проверить, в каких лунках он обогащён, ФотоМАСТЕР не является альтернативой.
CellProfiler Analyst и ilastik
ilastik ближе всего по идее интерактивного машинного обучения, но рабочая единица у него часто сама картинка или segmentation label. Pixel Classification позволяет рисовать примеры классов непосредственно на изображении, Object Classification принимает raw data вместе с probability map, binary segmentation или label image, извлекает объектные features и предсказывает классы. Есть batch processing, headless-режим, tracking, counting и 2D/3D workflows. Это сильный выбор, когда нужно одновременно построить segmentation/classification из изображений и не хочется заранее готовить SQL-схему.
CPA выигрывает там, где уже существует богатая measurement database из CellProfiler и важны связные инструменты QC: plate map, интерактивные таблицы, enrichment, SQL-фильтры и переход от points к исходным изображениям. ilastik удобнее как интерактивный image-first workflow; CPA — как data-first аналитический слой после измерения.
CellProfiler Analyst и QuPath
QuPath — полноценная платформа bioimage analysis, особенно известная по whole-slide pathology. Она открывает большие изображения, поддерживает аннотации, cell segmentation, tissue microarray dearraying, object и pixel classification, scripting и интеграцию с ImageJ. Для патоморфолога, который вручную размечает области на WSI и затем обучает классификатор клеток внутри проекта, QuPath часто естественнее.
CPA не пытается стать универсальным просмотрщиком с аннотационным холстом. Его преимущество — анализ измерительной базы и plate-based high-content screen. Поэтому вопрос выбора обычно решается не качеством интерфейса, а местом в pipeline. Если изображения уже прошли CellProfiler и главное — извлечь фенотипический сигнал из feature table, CPA логичен. Если надо начать с whole-slide, рисовать регионы и строить детекции прямо там, QuPath ближе к задаче.
Почему CellProfiler не следует считать конкурентом CPA
CellProfiler и CPA выполняют разные этапы. CellProfiler строит pipeline обработки изображений: загружает их, сегментирует объекты, измеряет форму, интенсивность и текстуру, сохраняет результаты. CPA берёт эти измерения и помогает исследовать их, размечать фенотипы и оценивать эксперимент. Во многих проектах правильный выбор — не «CellProfiler или CPA», а «CellProfiler затем CPA».
Когда программа подходит особенно хорошо
CPA хорошо подходит для high-content screen с десятками или сотнями планшетов, где у каждой клетки есть множество features и нужно ранжировать treatments по фенотипу. Он полезен в assay development, когда требуется проверять, что положительные и отрицательные контроли разделяются не только по среднему сигналу, но и по морфологической популяции. Он удобен в QC, потому что spatial map планшета быстро обнаруживает edge effects и batch effects.
Программа также полезна для exploratory analysis после CellProfiler. Когда исследователь не знает, какой из сотен признаков наиболее информативен, Scatter, Histogram, Density и Dimensionality Reduction позволяют увидеть структуру и сразу открыть изображения необычных объектов. Это важнее обычной статистической диаграммы: связь с image key помогает отличать биологический cluster от технического артефакта.
Ещё один сильный случай — классификация, где эксперт способен визуально различать фенотип, но трудно сформулировать один threshold. Пользователь размечает несколько классов, CPA строит модель по измерениям и возвращает объекты, на которых не уверен или которые относит к нужному классу. Несколько итераций превращают экспертное визуальное правило в массовое автоматическое scoring.
Когда лучше выбрать другой инструмент
Если у вас нет feature tables и нужна segmentation прямо по пикселям, начните с CellProfiler, ilastik, QuPath, Fiji/ImageJ или специализированной нейросетевой модели. CPA не предназначен для ручного рисования масок. Если задача — цифровая патологическая разметка WSI с регионами, тканевыми аннотациями и просмотром гигапиксельных слайдов, QuPath обычно лучше соответствует интерфейсной модели.
Если нужно ретушировать фото, менять фон, удалять предметы, править цвет кожи или делать фотомонтаж, нужен обычный фоторедактор, например ФотоМАСТЕР. Научная микроскопическая картинка в CPA не редактируется в таком смысле. Манипуляция изображением для публикации должна выполняться в другом инструменте с соблюдением правил научной добросовестности.
Если требуется production deep learning по сырым изображениям с GPU, а разметка уже есть в большом объёме, специализированные frameworks дадут больше контроля над архитектурой, augmentation и deployment. Neural Network в CPA — MLP над измерениями, а не convolutional training по исходным полям. CPA остаётся сильным как интерактивный слой исследователя, но не заменяет полноценный DL pipeline.
Практические рекомендации по качеству классификации
Первое правило — разнообразие training set важнее простого количества. Сотни клеток из одной лунки дают меньшую переносимость, чем меньший набор из нескольких планшетов, плотностей и партий. Собирайте примеры из разных условий, но не смешивайте технически несовместимые acquisition settings без нормализации.
Второе — контролируйте состав признаков. Удаляйте служебные columns, zero-variance features и метаданные, которые кодируют treatment. Если один признак имеет сомнительный биологический смысл, временно исключите его и сравните оценку. У модели должна быть возможность ошибаться честно, а не угадывать класс по номеру лунки.
Третье — проверяйте модель визуально на representative images. Метрики не показывают, что ложные positives все являются митотическими debris или краевыми cells. Score Image и переходы из Table Viewer существуют именно для такого контроля. Документируйте характер ошибок, потому что следующий эксперимент может изменить их частоту.
Четвёртое — используйте правильный unit of validation. Если итоговый biological decision принимается на уровне well, проверяйте не только per-cell metrics, но и separation controls на уровне well/enrichment. Хорошая клеточная модель обычно улучшает well scoring, но это не тождественные показатели, особенно при неодинаковом числе объектов и clustered errors.
Пятое — отделяйте QC от phenotype. Дефокус, saturation, debris, слишком низкая плотность и segmentation failure желательно исключать до классификации. Иначе модель расходует capacity на распознавание технических дефектов и становится менее переносимой.
Шестое — фиксируйте изменения training set. Если после каждого score пользователь перетаскивает десятки объектов без версии файла, невозможно понять, почему результат изменился. Сохраняйте milestones: initial, refined-controls, final. Вместе с ним сохраняйте properties и список исключённых features.
FAQ по повседневной работе
Можно ли использовать CPA без CellProfiler?
Да, если подготовить совместимую image/object схему самостоятельно. Нужны ключи, coordinates объектов, измерения и пути к изображениям. Практически CellProfiler удобен тем, что ExportToDatabase автоматически формирует большую часть структуры и properties. При сторонней базе больше ручной работы, но архитектурного запрета нет.
Можно ли анализировать только изображения без object-таблицы?
Да, при image classification. В properties задаётся соответствующий тип и размеры изображения. Для object classification и tiles отдельных клеток object-таблица с координатами нужна.
Работает ли программа в браузере?
Нет. Основная работа выполняется в локальном приложении. Официальные готовые сборки предоставляются для Windows и macOS, исходный код доступен отдельно. Поэтому в метаданных материал помечается как не онлайн-сервис.
Можно ли хранить изображения на сервере?
Да. CPA умеет обращаться к изображениям по HTTP, если пути корректно записаны в таблице или сформированы через image_url_prepend. Производительность при этом зависит от сети и размера файлов. Для интенсивного Image Gallery локальный кэш или быстрое сетевое хранилище может существенно улучшить отклик.
Какая модель Classifier лучшая?
Универсального ответа нет. RandomForest — хороший старт для нелинейных смешанных признаков, но SVC, boosting, logistic regression, LDA, KNeighbors и MLP могут быть лучше на конкретной структуре. Сравнивайте не только кросс-валидацию по training set, но и независимые controls и характер ошибок на изображениях.
Сколько объектов нужно разметить?
Фиксированного числа нет. Оно зависит от числа классов, сложности границы, шума и diversity. Начинайте с небольшого сбалансированного набора, обучайте модель и добавляйте трудные примеры. Останавливайтесь, когда независимые проверки стабилизируются, а новые примеры не меняют pattern ошибок существенно.
Нужно ли нормализовать признаки?
Часто да, особенно для SVC, KNeighbors, logistic regression и нейронной сети. Scaler в Classifier приводит признаки к mean 0 и standard deviation 1. Но плате- или batch-normalization может требовать отдельной логики в Normalization Tool. Нормализация не должна убирать биологический сигнал, поэтому проверяется на контролях.
Что делать с пропусками NaN?
CPA исключает объекты с NaN в используемых данных, но большая доля пропусков уменьшает training и scoring set. Найдите признаки, где NaN систематичен, и решите причину на этапе измерения либо исключите проблемную колонку. Не стоит бездумно заполнять пропуски нулями: ноль может иметь реальный биологический смысл.
Можно ли сохранить классы каждого объекта обратно в базу?
Для MySQL можно настроить class_table, куда Score All записывает class name вместе с image/object IDs. Имя существующей таблицы может быть перезаписано, поэтому выбирайте отдельное имя и делайте резервную копию важной схемы. В любом случае результаты можно выгрузить через Table Viewer в CSV.
Зачем нужен enrichment, если есть counts?
Абсолютный count зависит от общего числа объектов. Enrichment пытается учитывать и долю нужного класса, и размер выборки, поэтому удобнее для ранжирования образцов. Counts всё равно нужно смотреть рядом: очень маленькая лунка с экстремальной долей может иметь слабую статистическую устойчивость и быть следствием токсичности или потери клеток.
Можно ли использовать Plate Viewer только для результатов Classifier?
Нет. Он отображает числовые колонки доступных таблиц. Можно визуализировать intensity, area, object count, QC metric или любую другую подходящую величину и агрегировать её по лунке. Главное — понимать уровень данных и выбранный aggregation method.
Чем Workspace отличается от сохранённой обучающей выборки?
Workspace сохраняет конфигурацию графиков. Training set сохраняет bins и размеченные объекты Classifier. Это разные артефакты. Для воспроизводимого проекта нужны оба, если используются и стандартные графики, и обученная модель.
Можно ли перенести training set на новый эксперимент?
Технически загрузить файл можно, но перенос имеет смысл только при совместимой схеме features и acquisition. Если названия, шкалы или биологическая постановка изменились, старая модель может стать некорректной. Безопаснее использовать прежний training set как старт и заново проверить Score Image на контролях новой партии.
Почему t-SNE показывает красивые кластеры, но Classifier не разделяет их?
t-SNE строит нелинейное двумерное представление с акцентом на локальное соседство. Визуально отделённые области не гарантируют простой границы в исходном feature space и не всегда стабильны между параметрами. Откройте изображения кластеров, проверьте их биологическую однородность и используйте подтверждённые объекты для supervised training, а не принимайте сам кластер за готовый класс.
Стоит ли сохранять все графики как изображения?
Для отчёта — да, но вместе с исходной таблицей и настройками. PNG фиксирует внешний вид, но не содержит фильтр, диапазон цветовой шкалы или список rows. Workspace частично сохраняет конфигурацию, CSV сохраняет числа, а вместе они обеспечивают намного лучшую воспроизводимость.
Итог
CellProfiler Analyst полезен не количеством графиков как таковых, а тем, что объединяет измерительную базу, исходные микроскопические изображения и интерактивное обучение фенотипов. Его оптимальный сценарий начинается после сегментации: данные уже структурированы, objects связаны с изображениями, и исследователю нужно быстро переходить между числом, картинкой, классом и положением на планшете.
Если подготовить корректный properties-файл, заранее отделить QC от биологического сигнала и собирать training set из разнообразных независимых примеров, Classifier становится практичным инструментом массового scoring. Plate Viewer и графики при этом нужны не для украшения результата, а для проверки того, что модель не ловит batch effect или технический артефакт. В таком виде CPA особенно силён как аналитическое продолжение CellProfiler и как интерактивная среда для high-content experiments, где обычная таблица уже слишком далека от изображений, из которых эти числа были получены.
ФотоМАСТЕР предназначен для обычной визуальной обработки фотографий и не заменяет специализированные функции этой программы: управление оборудованием, астрономические расчёты, измерения или научный анализ. В сравнении рассматриваются разные этапы работы с изображениями, а не полная взаимозаменяемость приложений.
