Skip to content

Image analysis with python and napari, course for Bioinformatics for Ukraine

License

Notifications You must be signed in to change notification settings

wisstock/BioInUA_2025_img_analysis

Repository files navigation

Image Analysis with Python and Napari

Stand With Ukraine

Bioinformatics for Ukraine course, 6-24 October 2025, Kyiv, Ukraine.


Структура і зміст курсу

Загальний опис

Курс має декілька незалежних цілей:

  • Зрозуміти загальні методи та бібліотеки для роботи із цифровими зображеннями з використанням python.
  • Вивчити/пригадати загальні підходи для роботи з кодом на python для його ефективного повторного використання.
  • Розглянути окремі етапи попередньої обробки та аналізу біологічних зображень на прикладах реальних даних різної структури.
  • Знайомство із napari, python-based програми для відображення та обробки зображень.

Основним форматом завдань для самостійної роботи буде перетворення пройденого на занятті матеріалу у набір зручних для самих студентів інструментів. Упаковка окремих етапів обробки чи аналізу зображень в функції, функцій в модулі чи класи, а модулів в пакети. З погляду навичок програмування в цьому курсі буде акцент саме на створенні коду для повторного використання, а не одноразових скриптів чи ноутбуків. Вітається наявність власних візуальних даних із якими можна було б працювати впродовж курсу. Даних будь-яких різновидів флуоресцентної мікроскопії, томографії, візуалізації результатів гель-електрофорезу і блотів. Дані класичної світлової мікроскопії (світлопольної, темнопольної, фазово-контрастної) будуть дещо складнішими для аналізу, тому прошу їх уникати.

Important

Оскільки працювати доведеться на власних машинах, зважайте на це при виборі даних. Згрубша розмір зображень має бути принаймні у 2-2.5 рази меншим за обсяг оперативної пам'яті Вашого комп'ютера.

Курс розрахований на слухачів або із попереднім досвідом програмування на python Необхідними є загальні уявлення про типи даних (str, int, float, list, dict, bool, etc.) та основні оператори й синтаксичні конструкції (if-else, for loop).

Note

Типи даних в Python українською та англійською.

Note

Синтаксис конструкцій if-else та for loop українською й if-else та for loop англійською.

Note

Синтаксис функцій та класів в Python українською та англійською.

Формат Опис
Вступна зустріч Огляд загальної структури курсу, огляд матеріалів курсу та даних, завершення підготовки до роботи (за потреби допомога із встановлення IDE, створенням робочих оточень, встановлення бібліотек тощо).
Практичні заняття 4х заняття по 1.5 години протягом 2-х тижнів. Заняття складається з 10-15 хв відповіді на питання та розгляду домашнього завдання, 30-40 хв пояснення матеріалу та практичної роботи до кінця уроку. Для кожної зустрічі буде доступний окремий jupiter-notebook, що матиме пояснення та приклади, практичну роботу та домашнє завдання.
Підготовка проєкту По завершенню практичних занять впродовж останнього тижня курсу запланована самостійна робота. Побудувати набір інструментів для аналізу власних даних використавши набуті навички. Впродовж самостійної роботи продовжимо підтримувати зв'язок у чаті групи, і організуємо як мінімум 1 онлайн зустріч для обговорення прогресу і розв'язання проблем. Для студентів, які поки що не мають власних зображень, будуть доступні різні навчальні дані.

Important

До початку курсу прошу підготуватись: встановити всі необхідні пакети та підготувати IDE. Всі необхідні кроки описані в розділі Підготовка до роботи, а якщо виникнуть неочікувані проблеми, вирішимо їх на вступній зустрічі.

Зміст зустрічей

# Bio Py Homework
0 Огляд підходів оптичної мікроскопії та даних, що отримуються на мікроскопах. Обговорення даних, що будуть використані впродовж курсу (опціонально - обговорення власних даних слухачів). Перевірка, чи у всіх слухачів вийшло успішно встановити IDE, створити оточення та встановити необхідні бібліотеки. Додатковий час для самостійного пригадування синтаксису python та заверешення підготовки.
1 Зображення як багатовимірні масиви, відображення багатоканальних і тривимірних зображень, псевдокольори (color maps / lookup table). Завантаження/збереження зображень, маніпуляції з масивами numpy, відображення зображень, функції python. Відпрацювання маніпуляцій із масивами numpy: виділення окремих регіонів на зображеннях для подальшого аналізу, підбір оптимальних налаштувань для відображення зображень.
2 Попередня обробка зображень, детекція та сегментація об'єктів на зображеннях. Фільтрація зображень, методи побудови бінарних і багаторівневих масок, морфологічні операції над масками, модулі python. Оформлення окремих етапів процесингу зображень в функції (для фільтрації, початкової детекції об'єктів, отримання кінцевих масок об'єктів тощо).
3 Отримання кількісних даних з зображень та збереження результатів аналізу в tidy форматі. Оцінка морфологічних параметрів масок, оцінка зміни параметрів в масках в часі, збереження результатів аналізу в табличному форматі, пакети python. Оформлення окремих етапів аналізу зображень і збереження результатів аналізу в функції; перенесення набору створених функцій у модуль та пакет.
4 napari - open source для переглядання та аналізу зображень Упаковка результатів роботи у модулі та перетворення їх у плагін для napari. Перетворення функцій створених на попередніх зустрічах у віджети napari.

Підготовка до роботи

Структура репозиторію курсу

└── BioInUA_2025_img_abalysis/
    ├── course_data/                     # папка для розміщення Ваших даних та коду, не лякайтесь качки
    ├── demo_data/                       # демонстраційні дані, НЕ видаляйте їх і НЕ змінюйте назви
    │      ├── ...
    │      └── DESCRIPTION.md                # опис та авторство демонстраційних даних 
    │
    ├── pic/                             # зображення для README
    ├── slides/                          # презентація до курсу
    ├── templates/                       # приклади структур python для різних зустрічей
    │   ├── package-template/                # приклад пакета python
    │   ├── plugin-template/                 # приклад пакета python оформленого як плагін для napari
    │   ├── __init__.py                      # службовий файл директорії що дозволяє імпортувати приклад модуля
    │   └── module_template.py               # приклад модуля python
    │
    ├── .git/                             # дані системи контролю версій git
    |
    ├── 1_img_as_arrays.ipynb             # jupiter-notebook для першої зустрічі 
    ├── 2_preproc_and_segmentation.ipynb  # jupiter-notebook для другої зустрічі
    ├── 3_features_and_analysis.ipynb     # jupiter-notebook для третьої зустрічі
    ├── 4_napari_plugins.ipynb            # jupiter-notebook для четвертої зустрічі
    |
    ├── LICENSE                           # ліцензія матеріалів курсу, CC BY 4.0 
    └── README.md                         # файл опису курсу

Необхідні бібліотеки

  • Jupyter
  • NumPy
  • Pandas
  • SciPy
  • Scikit-Image
  • Matplotlib
  • napari

Встановлення miniconda

При роботі з python-проєктами менеджер оточень (environment management system) використовуються для встановлення бібліотек з віддалених серверів, репозиторіїв, або цілих груп серверів - каналів. Це дозволяє запобігти конфліктам версій та залежностей. До найбільш вживаних відносяться venv та conda.

Для роботи з jupyter-notebook впродовж перших трьох зустрічей потрібно створити робоче оточення за допомогою conda і встановити в нього всі необхідні бібліотеки.

Встановіть менеджер оточень miniconda для Вашої операційної системи.

Warning

Рекомендую встановлювати саме miniconda, оскільки anaconda одразу містить багато непотрібних для курсу бібліотек і важить > 2GB.

Створення та підготовка оточення

Спілкування з miniconda відбувається шляхом текстових команд в Unix-терміналі (у випадку Linux або MacOS) або запустивши Anaconda Prompt (у випадку Windows).

Tip

Короткий перелік основних команд conda.

Створення оточення однією командою (перевірено на miniconda 25.7.0 )

Створення оточення з необхідним набором бібліотек:

conda create -n bioin-img python jupyter numpy pandas scipy scikit-image matplotlib-base -y

Пошук, завантаження і встановлення бібліотек можуть зайняти понад 10 хвилин, а по завершенню miniconda може запропонувати Вам активувати новостворене оточення.

Для запуску нашого оточення в Unix-термінал/Anaconda Prompt використовується команда:

conda activate bioin-img

А для виходу з оточення:

conda deactivate

Caution

Якщо після першого запуску miniconda при спробі створити оточення виникає помилка

CondaToSNonInteractiveError: Terms of Service have not been accepted for the following channels. Please accept or remove them before proceeding:
    - https://repo.anaconda.com/pkgs/main
    - https://repo.anaconda.com/pkgs/r

To accept these channels' Terms of Service, run the following commands:
    conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
    conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r

просто погоджуйтесь і робіть те, що воно Вас попросило :(

Послідовно виконайте в Unix-термінал/Anaconda Prompt дві запропоновані miniconda команди, щоб прийняти ліцензійні умови репозиторіїв:

conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r

Plan B (якщо щось пішло не так)

Якщо виникла інша помилка і не вдалось створити оточення, раджу перевірити перелік доступних каналів, звідки conda може встановлювати пакети.

Для цього виконайте:

conda config --show channels

Якщо у переліку присутні лише defaults, необхідно додати канал conda-forge що містить велику кількість корисних бібліотек:

conda config --add channels conda-forge

Після цього створення оточення за допомогою однієї команди має пройти вдало.

Встановлення napari

napari є відкритим програмним забезпеченням для візуалізації та аналізу багатовимірних зображень. Окрім можливості перегляду зображень napari надає зручний графічний інтерфейс та простий framework для інтеграції нового функціоналу у вигляді плагінів. Доступні плагіни можна знайти на napari-hub.

Встановлення за допомогою pip через Unix-термінал/Anaconda Prompt, встановлювати слід в оточенні bioin-img:

python -m pip install "napari[all]"

Для запуску графічного інтерфейсу переглядача зображень виконайте команду napari в Unix-терміналі/Anaconda Prompt в оточені bioin-img, завантаження може зайняти до декількох хвилин.

Tip

До початку курсу можете також ознайомитись з матеріалами napari how-to guides.

Встановлення IDE

Інтегроване середовище розробки (Integrated Development Environment - IDE) значно спростить роботу з оточеннями conda та jupyter-notebook з яких складається цей курс.

Встановлення та налаштування:

  • Встановіть Visual Studio Code для Вашої операційної системи
  • Для роботи з кодом python та jupyter-ноутбуками користуючись вкладкою Розширення (Extensions) на лівій панелі IDE встановіть розширення python та jupyter
  • Для запуску jupyter-notebook в створеному раніше оточенні conda натисніть на меню Select Kernel у верхньому правому кутку вікна відкритого jupyter-notebook, оберіть пункт Python Environment та необхідне нам оточення bioin-img серед запропонованих варіантів інтерпретаторів чи оточень (у випадку такого підключення попередній запуск оточення через Unix-термінал/Anaconda Prompt не потрібен).

Робота з пакетами python/плагінами napari

Структура директорії пакету python

└── package-template/          # директорія пакету
    ├── src/                       # загальна директорія із вихідним кодом пакету
    │   └── package_template/      # директорія із модулями пакету
    │       ├── __init__.py        # службовий файл директорії
    │       └── module.py          # код модуля у складі пакету
    │
    ├── pyproject.toml        # конфігураційний файл
    ├── README.md             # файл опису
    ├── LICENSE               # ліцензія
    └── .gitignore            # службовий файл git

Файли __init.py__ вказують, що вміст директорії містить в собі модулі python, а не довільні файли. Додаткову інформацію про створення пакетів nта оформлення конфігураційного файлу пакету pyproject.toml можна подивитись в офіційній документації python про модулі та пакети.

Структура директорії плагіну napari

└── plugin-template/          # директорія плагіну
    ├── src/                  # загальна директорія із вихідним кодом
    │   └── plugin_template/      # директорія із модулями плагіну
    │       ├── __init__.py       # службовий файл директорії
    │       ├── napari.yaml       # маніфест napari
    │       └── _widget.py        # код віджетів плагіну
    │
    ├─── pyproject.toml       # конфігураційний файл
    ├─── README.md            # файл опису
    ├─── LICENSE              # ліцензія
    └─── .gitignore           # службовий файл git

Додатковий службовий файл napari.yaml у директорії із вихідним кодом, маніфест, містить вказівки на приналежність конкретних функцій в складі модулів до елементів плагіну і додаткову інформацію для відображенні в графічному інтерфейсі napari. Додаткову інформацію про створення плагінів можна подивитись в офіціфній документації napari.

Встановлення пакету/плагіну з використанням pip

Для встановлення створеного власноруч пакету чи плагіну необхідно користуючись Unix-терміналом/Anaconda Prompt перейти в директорії проєкту та виконати наступну команду:

python -m pip install -e .

Флаг -e забезпечує встановлення з можливітю редагування (editable install), тому всі зміни в вихідному коді пакету/плагіну будуть одразу доступні до використання після перезаванатажаення інтепритатора python.


Матеріали до курсу

Корисні посилання

Література


Ліцензія

Всі матеріали курсу, включно із кодом, демонстраційними даними та візуальними матеріалами ліцензовані на умовах Creative Commons Attribution 4.0 International (CC BY 4.0). Ви можете вільно використовувати, поширювати, змінювати та адаптувати матеріали курсу для будь-яких цілей, за умови вказання відповідного авторства.

Image Analysis with Python and Napari, BioInUA course by Borys Olifirov is licensed under CC BY 4.0

About

Image analysis with python and napari, course for Bioinformatics for Ukraine

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors