Projekty / 2024-2026
Scientific imaging workflows
Projekt rozwoju aplikacji desktopowych do analizy danych STM, EC-STM i LEED: od kuracji danych, przez rejestrację, detekcję i tracking, po walidowane metryki oraz eksport wyników.
Krótki opis projektu
Scientific imaging workflows to parasolowy projekt software’owy skupiony na praktycznej analizie trudnych danych eksperymentalnych z mikroskopii i dyfrakcji powierzchniowej. Obejmuje aplikacje do pracy z obrazami STM/EC-STM, sekwencjami STM/MPP oraz obrazami LEED, w których potrzebne są jednocześnie automatyzacja, ręczna kontrola jakości, walidacja ilościowa i eksport wyników.
Wspólnym założeniem tych aplikacji jest podejście human-in-the-loop: algorytm może wykrywać, dopasowywać, propagować albo śledzić obiekty, ale użytkownik nadal kontroluje wynik, poprawia geometrię, blokuje zaakceptowane obiekty, porównuje warianty i eksportuje dane w jawnej postaci.
Projekt obejmuje między innymi narzędzia MolDetA v2, Lattice Fourier Analyzer (LFA), Spot Tracking & Analysis for LEED (STAL), NaParA, NanoTrack i Quantum Noise Analysis (QNA).
Problem
Dane STM, EC-STM i LEED często są trudne do analizy automatycznej. Typowe problemy to:
- dryf obrazu, deformacje skanera i niedokładne dopasowanie ramek,
- zaszumione lub niejednorodne obrazy mikroskopowe,
- analiza sekwencji, a nie tylko pojedynczych obrazów,
- porównywanie wielu kanałów, kierunków skanowania lub stanów eksperymentu,
- brak pełnego zaufania do automatycznej detekcji w gęstych scenach,
- konieczność eksportu wyników do publikacji, walidacji, notebooków i dalszego modelowania.
Dlatego rozwijane narzędzia nie są wyłącznie detektorami. Są to kompletne aplikacje do kuracji danych eksperymentalnych, w których automatyzacja i ręczna inspekcja działają razem.
Główna idea workflow
Typowy workflow w projekcie wygląda następująco:
- Import danych eksperymentalnych - obrazy i sekwencje STM/EC-STM/LEED z metadanymi, skalą fizyczną i informacją o klatkach.
- Inspekcja i preprocessing - podgląd obrazów, ROI, odszumianie, korekta linii, leveling, filtracja i przygotowanie danych do algorytmów.
- Rejestracja i mapowanie - dopasowanie klatek, przepływ optyczny, korelacja fazowa, ECC, transformacje afiniczne albo mapy przesunięć.
- Detekcja lub seedowanie - YOLO, klasyczne przetwarzanie obrazu, ROI, bbox, segmentacja, kontury albo ręczne seedy.
- Śledzenie i kuracja - tracking punktów, masek, plamek LEED, cząstek, krawędzi stopni albo molekuł, z możliwością ręcznej korekty.
- Analiza ilościowa - metryki geometrii, intensywności, promieni, odległości, parametrów sieci, rozkładów albo funkcji zależnych od potencjału i czasu.
- Walidacja i eksport - sesje, CSV/JSON/NPZ/STP, wykresy, tabele porównawcze, pliki treningowe i raporty techniczne.
Stack i architektura
W projekcie pracuję głównie w stacku Python / PyQt6. Do interaktywnej wizualizacji wykorzystuję pyqtgraph, do wykresów podsumowujących Matplotlib, a do obliczeń NumPy, SciPy, pandas, scikit-image i OpenCV.
W wybranych workflow używam także PyTorch, Ultralytics YOLO, backendów z rodziny SAM2, trackerów punktowych i detektorów krawędzi. Cięższe modele są uruchamiane przez subprocessy w osobnych środowiskach Python/conda, aby główna aplikacja PyQt6 pozostawała stabilna mimo konfliktujących zależności.
Najważniejsze wzorce architektoniczne:
- human-in-the-loop - automatyzacja generuje propozycje, a użytkownik weryfikuje wynik,
- original-data-first - użytkownik nadal widzi oryginalne dane eksperymentalne,
- reproducible sessions - sesje zapisują dane, parametry, obiekty, korekty i wyniki,
- quantitative validation - aplikacje generują metryki jakości, residuals, fit quality, QA rejestracji albo porównania frame-by-frame.
Powiązane aplikacje
MolDetA v2
Molecule Detection, Annotation and Analysis to aplikacja PyQt6 do kuracji molekuł w czterech zsynchronizowanych skanach STM: fwd_topo, bwd_topo, fwd_current, bwd_current. Program pokazuje oryginalne obrazy, a rejestracji używa jako wewnętrznej warstwy mapowania bboxów i analizy.
Najważniejsze elementy: detekcja YOLO i klasyczna, propagacja bboxów między skanami, ręczna edycja, grupowanie w cztery role, kategorie, filtry, workspace list molekuł, analiza intensywności i line-wise acquisition analysis.
Lattice Fourier Analyzer (LFA)
LFA to narzędzie do analizy sieci krystalicznych i superstruktur w obrazach STM/EC-STM. Aplikacja wykorzystuje FFT, lokalizację pików Bragga i substrate-anchored affine correction, aby wyznaczać parametry sieci, rejestr adsorbat-podłoże i metryki superstruktur.
Najważniejsze elementy: preprocessing STM, FFT w ROI, dopasowanie 2D Gaussa, korekcja afiniczna dryfu, parametry sieci rzeczywistej, adsorbate lattice analysis, eksport CSV/JSON.
Spot Tracking & Analysis for LEED (STAL)
STAL to aplikacja do detekcji, śledzenia i analizy plamek dyfrakcyjnych LEED w sekwencjach obrazów. Łączy klasyczne przetwarzanie obrazu, YOLO, metody linkowania i optical flow z dopasowaniem 2D Gaussa oraz eksportem metryk.
Najważniejsze elementy: detekcja plamek, YOLO checkpoints, Hungarian linking, directional linking, optical flow, pattern center, radii, tabele wyników, wykresy, eksport CSV i sesje.
NaParA
Nanoparticle Analyzer to aplikacja do preprocessingu obrazów STM, detekcji nanocząstek i ilościowego opisu populacji obiektów. Pracuje na pojedynczych obrazach i seriach, umożliwiając analizę ROI oraz eksport wyników.
Najważniejsze elementy: import .stp, .s94, .mpp, ROI preview, Gaussian/Median/White top-hat, Otsu/Sauvola, kontury, connected objects, centroidy, powierzchnie, nearest-neighbor distance, eksport CSV/PNG.
NanoTrack
NanoTrack to narzędzie do sekwencji STM i filmów MPP. Umożliwia rejestrację ramek, seedowanie obiektów, tracking cząstek, tracking masek i tracking krawędzi stopni, z wynikami analizowanymi w oryginalnych współrzędnych klatki.
Najważniejsze elementy: sequence viewer, BM3D, horizontal repair, Phase/ECC/Optical Flow/Deep Matcher registration, YOLO seeds, SAM2/DAM4SAM/SAMURAI, TAPIR/LocoTrack/Track-On-R, edge backends, metryki cząstek, krawędzi i QA rejestracji.
Quantum Noise Analysis (QNA)
QNA to aplikacja do ilościowej analizy szumu w danych STM. Pozwala definiować pary ROI typu Site/Set, obliczać mapy (I - I_SET)^2, analizować metryki w funkcji klatki lub potencjału i porównywać wiele miejsc w sekwencji.
Najważniejsze elementy: import .mpp, .stp, .s94, do 25 par ROI, metryki L0, L, K, I_A, D, A_site, A_set, E, wykresy Property vs frame i L0(E)/L(E), eksport map STP.
Przykładowe use case’y
Kuracja gęstych obrazów STM
MolDetA v2 i NaParA pozwalają wykrywać, poprawiać i grupować obiekty w obrazach STM, gdzie automatyczna detekcja wymaga późniejszej ręcznej kontroli jakości.
Analiza sekwencji i dynamiki
NanoTrack i STAL służą do śledzenia zmian w czasie: ruchu cząstek, plamek LEED, krawędzi stopni albo zmian geometrii sygnału w kolejnych klatkach.
Walidacja rejestracji i mapowania
MolDetA v2, NanoTrack i LFA wykorzystują różne strategie rejestracji, aby kontrolować dryf, przesunięcia i deformacje między obrazami lub w obrębie jednej klatki.
Deep learning wspierający eksperymentatora
YOLO, SAM2, trackery punktowe i detektory krawędzi są wykorzystywane jako narzędzia wspomagające, a nie zamknięte czarne skrzynki. Generują propozycje, które można dalej edytować i walidować.
Analiza ilościowa do publikacji
LFA, QNA, STAL, NanoTrack i MolDetA v2 generują metryki, tabele i eksporty, które mogą być używane do przygotowywania wykresów, porównań, raportów lub materiałów uzupełniających.
Mój wkład
W ramach projektu zajmuję się całym łańcuchem od koncepcji workflow po implementację narzędzi:
- projektuję architekturę aplikacji i modułów analitycznych,
- buduję interfejsy PyQt6 i interaktywne viewery,
- integruję klasyczne algorytmy, deep learning i tracking,
- przygotowuję formaty sesji, eksporty i ścieżki walidacji,
- porządkuję status feature’ów w planach implementacyjnych,
- tworzę opisy techniczne i dokumentację,
- testuję narzędzia na rzeczywistych danych STM/EC-STM/LEED.
Status projektu
Projekt jest aktywnie rozwijany. Poszczególne aplikacje są na różnych etapach dojrzałości: część działa jako narzędzia robocze do bieżącej analizy, część jest platformą testową dla nowych trackerów, a część pełni rolę wyspecjalizowanych workflow do konkretnych danych eksperymentalnych.
Najważniejszy wspólny kierunek rozwoju to przejście od jednorazowych skryptów do odtwarzalnych aplikacji badawczych, w których użytkownik widzi dane, decyzje algorytmu, parametry analizy i finalny eksport w jednym spójnym środowisku.