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
Синтаксис функцій та класів в 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
При роботі з python-проєктами менеджер оточень (environment management system) використовуються для встановлення бібліотек з віддалених серверів, репозиторіїв, або цілих груп серверів - каналів. Це дозволяє запобігти конфліктам версій та залежностей. До найбільш вживаних відносяться venv та conda.
Для роботи з jupyter-notebook впродовж перших трьох зустрічей потрібно створити робоче оточення за допомогою conda і встановити в нього всі необхідні бібліотеки.
Встановіть менеджер оточень miniconda для Вашої операційної системи.
Warning
Рекомендую встановлювати саме miniconda, оскільки anaconda одразу містить багато непотрібних для курсу бібліотек і важить > 2GB.
Спілкування з miniconda відбувається шляхом текстових команд в Unix-терміналі (у випадку Linux або MacOS) або запустивши Anaconda Prompt (у випадку Windows).
Tip
Короткий перелік основних команд conda.
Створення оточення з необхідним набором бібліотек:
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
Якщо виникла інша помилка і не вдалось створити оточення, раджу перевірити перелік доступних каналів, звідки conda може встановлювати пакети.
Для цього виконайте:
conda config --show channels
Якщо у переліку присутні лише defaults, необхідно додати канал conda-forge що містить велику кількість корисних бібліотек:
conda config --add channels conda-forge
Після цього створення оточення за допомогою однієї команди має пройти вдало.
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.
Інтегроване середовище розробки (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 не потрібен).
└── package-template/ # директорія пакету
├── src/ # загальна директорія із вихідним кодом пакету
│ └── package_template/ # директорія із модулями пакету
│ ├── __init__.py # службовий файл директорії
│ └── module.py # код модуля у складі пакету
│
├── pyproject.toml # конфігураційний файл
├── README.md # файл опису
├── LICENSE # ліцензія
└── .gitignore # службовий файл git
Файли __init.py__ вказують, що вміст директорії містить в собі модулі python, а не довільні файли. Додаткову інформацію про створення пакетів nта оформлення конфігураційного файлу пакету pyproject.toml можна подивитись в офіційній документації python про модулі та пакети.
└── plugin-template/ # директорія плагіну
├── src/ # загальна директорія із вихідним кодом
│ └── plugin_template/ # директорія із модулями плагіну
│ ├── __init__.py # службовий файл директорії
│ ├── napari.yaml # маніфест napari
│ └── _widget.py # код віджетів плагіну
│
├─── pyproject.toml # конфігураційний файл
├─── README.md # файл опису
├─── LICENSE # ліцензія
└─── .gitignore # службовий файл git
Додатковий службовий файл napari.yaml у директорії із вихідним кодом, маніфест, містить вказівки на приналежність конкретних функцій в складі модулів до елементів плагіну і додаткову інформацію для відображенні в графічному інтерфейсі napari. Додаткову інформацію про створення плагінів можна подивитись в офіціфній документації napari.
Для встановлення створеного власноруч пакету чи плагіну необхідно користуючись Unix-терміналом/Anaconda Prompt перейти в директорії проєкту та виконати наступну команду:
python -m pip install -e .
Флаг -e забезпечує встановлення з можливітю редагування (editable install), тому всі зміни в вихідному коді пакету/плагіну будуть одразу доступні до використання після перезаванатажаення інтепритатора python.
- Scikit-image examples
- Image processing learning resorces
- Analyzing fluorescence microscopy images with ImageJ
- Introduction to Bioimage Analysis by Dr. Pete Bankhead
- The Carl Zeiss Microscopy Online Campus
- MicroscopyU from Nikon
- Knowledge Hub from Olympus
- Huygens Imaging Academy from Scientific Volume Imaging
- Thorlabs Optical Microscopy Course
- Introduction to Modeling for Neuroscience
- Convolutions in image processing, YouTube
- Python for Data Science
- R for Data Science
- Fundamentals of Fluorescence Imaging
- Imaging Cellular and Molecular Biological Functions
- Handbook of Biological Confocal Microscopy
- An introduction to optical super-resolution microscopy for the adventurous biologist
- Nanoscopy and Multidimensional Optical Fluorescence Microscopy
Всі матеріали курсу, включно із кодом, демонстраційними даними та візуальними матеріалами ліцензовані на умовах 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

