Obrazowanie ilościowe i radiomika — materiały referencyjne
Materiały referencyjne · Skondensowany materiał do szybkiego wyszukiwania — zamrożone liczby M1-09, tabela rodzin cech, cytowania dotyczące standaryzacji, narzędzia i typowe sposoby niepowodzenia. Wersje dydaktyczne znajdują się w rozdziale; nazwy 107 cech zawiera dodatek z manifestem.
Trzy terminy
- Obrazowanie ilościowe — obiektywne, odtwarzalne pomiary (objętości, średnice, osłabienie promieniowania). Termin najszerszy i najłatwiejszy do obrony.
- Radiomika — duży zestaw cech (głównie tekstury/kształtu), po którym następuje modelowanie.
- Biomarker obrazowy — cecha zwalidowana względem biologicznego/klinicznego odniesienia. Większość cech radiomicznych nie jest biomarkerami.
Warstwa pomiarowa — centralny model rozdziału
biological reality → acquisition physics → reconstruction → segmentation/ROI → geometry + preprocessing → feature implementation → MEASUREMENT → statistical inference → predictive model → clinical claimModel może wykorzystywać kernel, ośrodek, skaner, styl segmentacji lub przetwarzanie wstępne zamiast biologii; wysokie AUROC/C-index nie naprawia złej warstwy pomiarowej. Trafność/stabilność pomiaru · związek statystyczny · predykcja · użyteczność kliniczna to cztery różne pytania. Pełne omówienie: Warstwa pomiarowa.
Proces — łańcuch wyborów
acquisition/reconstruction → segmentation → preprocessing → resampling → discretisation → extraction → robustness → modelUstal i raportuj każdy etap. Zamrożona kolejność M1-09 w TRACE-CT:
piksele DICOM → HU (RescaleSlope/Intercept) → zewnętrzna izotropowa zmiana
próbkowania do 1 mm (obraz B-spline, maska NN) → ograniczenie do [-1000, +400]
HU → PyRadiomics (binWidth 25, tylko Original, rzeczywiste 3D, etykieta 1,
bez normalizacji).
- Kolejność operacji określa cechę:
resample → clip≠clip → resample(interpolacja otrzymuje inne dane wejściowe). TRACE-CT zamroził resample→clip jako swoją wdrożoną, zwalidowaną kolejność; zmiana kolejności zmienia mierzoną wielkość — jest częścią definicji pomiaru, a nie wyborem stylu (rozdział 4). - Bez podwójnej zmiany próbkowania: zewnętrzna zmiana próbkowania oznacza,
że
resampledPixelSpacingw PyRadiomics musi pozostaćNone; dwa operatory interpolacji oznaczają inny pomiar. - Ograniczenie wartości ≠ resegmentacja: ograniczenie wartości przypisuje
wokselom obrazu wartości z ograniczonego zakresu (maska pozostaje bez zmian);
resegmentRangeusuwa woksele z maski (intensywność a maska morfologiczna). TRACE-CT: ograniczenie zewnętrzne,resegmentRange = None.
Macierz sześciu ustawień M1-09 — zmienna rekonstrukcji
TCIA RIDER Lung CT v3 (DOI 10.7937/K9/TCIA.2015.U1X8A5NR, CC BY 4.0; 32
pacjentów z NSCLC, dwa skany tego samego dnia, sześć ustawień dla każdego skanu;
wszystkie sześć ustawień należy do aktualnego zakresu v3 — v2 obejmowała tylko 1.25L):
| kernel płucny (L) | kernel standardowy (S) | |
|---|---|---|
| 1.25 mm | 1.25L | 1.25S |
| 2.5 mm | 2.5L | 2.5S |
| 5 mm | 5L | 5S |
- Analiza główna: Scan 1 1.25L a Scan 2 1.25L = powtarzalność test–retest — zmienność pomiaru w niemal identycznych warunkach, przy pomijalnej oczekiwanej ewolucji biologicznej guza w tym odstępie.
- Analiza wtórna: wszystkie C(6,2) = 15 par ustawień w obrębie tego samego skanu = odporność/zgodność rekonstrukcji (zmienia się wyłącznie rekonstrukcja).
- Są to odrębne analizy; nigdy nie łączy się ich w jedną ogólną liczbę „odtwarzalności”.
- Seria 5 mm utraciła już informacje o wysokich częstotliwościach w osi z; późniejsze zwiększenie próbkowania do 1 mm tworzy próbki, a nie anatomię.
Klasy cech — PyRadiomics, osiem, jeśli shape (2D) i shape (3D) liczyć osobno
first-order · shape (3D) · shape (2D) · GLCM · GLRLM · GLSZM · GLDM · NGTDM.
Ściśle rzecz biorąc, danymi wejściowymi są: shape z geometrii maski (niezależne od wartości
szarości — lecz zależne od maski: kernel wpływa tylko za jej pośrednictwem);
first-order z rozkładu intensywności wokseli ROI (statystyki wartości surowych
dla Mean/Median/Min/Max/Variance/percentyli; statystyki zdyskretyzowanego
histogramu dla Entropy/Uniformity — zweryfikowano w przypiętym firstorder.py:
targetVoxelArray a p_i); rodziny teksturalne z macierzy zbudowanych na
zdyskretyzowanym ROI.
Zamrożony manifest M1-09 — 107 nieprzestarzałych cech Original 3D
| Rodzina | Liczba | Punkt wyjścia |
|---|---|---|
| firstorder | 18 | rozkład intensywności wokseli ROI (wartości surowe dla Mean/Variance/…; zdyskretyzowany histogram dla Entropy/Uniformity) |
| shape | 14 | tylko maska |
| glcm | 24 | macierz współwystępowania |
| glrlm | 16 | macierz długości serii |
| glszm | 16 | macierz wielkości stref |
| gldm | 14 | macierz zależności |
| ngtdm | 5 | różnice odcieni szarości w sąsiedztwie |
| łącznie | 107 |
Zgodnie z założeniami projektu uwzględniono wyłącznie Original: shape2D, Wavelet/LoG/Square/SquareRoot/Logarithm/
Exponential/Gradient/LBP, mapy wokseli, cechy przestarzałe i informacje
diagnostyczne są wykluczone (projekt pomiaru wyjściowego; filtry stanowiłyby osobny
zamrożony eksperyment). Zestaw odpowiada domyślnie włączonym, nieprzestarzałym
cechom 3D w przypiętej wersji. Nazwy kanoniczne
original_<class>_<Feature>; pełna lista: dodatek z
manifestem. Ogólne stwierdzenie w artykule „107
features incl. wavelet” opisuje inny zestaw — zawsze pytaj: które 107?
Cechy filtrowane — poza M1-09
LoG (filtr pasmowoprzepustowy dla zadanej wartości sigma) i wavelet (pasma częstotliwości HHH/LLL/…), obliczane ponownie na przefiltrowanym obrazie. Klasa shape jest wykluczona (to właściwość maski). Wprowadzenie cech filtrowanych oznacza kolejną transformację wrażliwą na implementację — dokładna semantyka filtra musi być zgodna między programami, zanim zgodne będą wartości; problem ten uwzględnia standaryzacja filtrów IBSI 2. Ustal i raportuj typ filtra oraz jego parametry. Obliczenia 2D i 3D wyznaczają różne cechy — raportuj, którego wariantu użyto.
Dyskretyzacja
X_b = floor((X - L) / w) + 1 przy w > 0 i zadeklarowanej dolnej granicy lub
kotwicy L (metoda stałego rozmiaru przedziału IBSI, FBS). Minimum ROI jest jedną
z możliwych zadeklarowanych kotwic w ograniczonej konwencji, a nie jedynym ogólnym
wyborem IBSI. PyRadiomics stosuje natomiast
floor(X / w) - floor(min(X_ROI) / w) + 1: przedziały zakotwiczone w zerze oraz
stałe przeetykietowanie, dzięki któremu zaobserwowane minimum ROI otrzymuje wartość
- W szczególnych przypadkach formuły mogą się pokrywać, ale nie są zawsze
numerycznie identyczne. Domyślna wartość PyRadiomics to
binWidth = 25. Zmiana szerokości przedziału zmienia kontrakt dyskretyzacji i może zmienić wartości cech. Kierunek i wielkość zmiany zależą od danych, zadeklarowanego kontraktu dyskretyzacji, definicji cechy, macierzy i agregacji; z samej szerokości przedziału nie wynika żaden uniwersalny kierunek. Ustal i raportuj; nigdy nie dostrajaj do metryki.
Semantyka PyRadiomics — co operacyjnie oznacza „cecha X”
Nazwa + wersja/commit biblioteki + typ obrazu (Original a
pochodny) + włączone klasy + dokładne listy cech + etykieta + 2D/3D (force2D false)
- geometria wejściowa + zmiana próbkowania (
resampledPixelSpacingNone) + interpolator + normalizacja (wyłączona) + rozróżnienie ograniczenia wartości/resegmentacji +binWidth+ agregacja macierzy (domyślnie GLCM: uśredniane są wartości cech dla poszczególnych kątów; przy ważeniu według odległości macierze są najpierw ważone i sumowane — feature(average(matrices)) ≠ average(feature(matrices)) dla cech nieliniowych). Tekst konfiguracji ≠ konfiguracja wynikowa: pominięte wartości są wartościami domyślnymi; jedyna wiarygodna kontrola wczytuje plik przez przypięty ekstraktor i sprawdza konfigurację wynikową. SHA-256 manifestu umożliwia maszynowe sprawdzenie odpowiedzi na pytanie „które 107?”. Właściwe sformułowanie: definicje dostosowane do IBSI, z udokumentowaną semantyką implementacji PyRadiomics — nigdy ogólne „IBSI compliant”. Pełne omówienie: Nazwa cechy nie jest definicją operacyjną.
Statystyki zgodności
Współczynnik r Pearsona mierzy związek liniowy, a nie zgodność — dla co najmniej
dwóch skończonych par obserwacji, przy niestałym X i dokładnej zależności
Y = a + bX, gdy b > 0, otrzymujemy r = +1, a gdy b < 0 — r = -1; przy
b = 0 lub zerowej wariancji r jest niezdefiniowany. Korelacja nie uwzględnia
kalibracji.
CCC Lina (zamrożona główna metryka M1-09; Lin 1989, DOI 10.2307/2532051):
2·cov(X,Y)CCC = ──────────────────────────────────── var(X) + var(Y) + (mean(X)−mean(Y))²- Zgodność względem prostej identyczności y = x: precyzja × dokładność (mianownik = rozrzut X + rozrzut Y + kwadrat obciążenia średniej).
- Przykład obliczony krok po kroku:
X=[1,2,3],Y=[2,4,6]→ r = 1, CCC = 4/11 ≈ 0.36 (przesunięcie średniej wnosi 4 do mianownika 22/3).Y=X→ CCC = 1;Y=2μ−X→ CCC = −1 (doskonała niezgodność). - Momenty populacyjne: zamrożony estymator wykorzystuje momenty 1/N dla obserwowanego wektora par (postać Lina). Nie jest to swobodny wybór — przy nierównych średnich N zamiast N−1 zmienia wartość CCC (4/11 zamiast 4/9 w opracowanym przykładzie); definicja estymatora należy do zamrożonego kontraktu statystycznego.
- Przypadki zdegenerowane: < 2 skończone pary albo zerowy mianownik (oba wektory stałe i równe) → CCC niezdefiniowane, zapisane z dokładną przyczyną, nigdy zastępowane przez 0/1. Wektory stałe, lecz różne → dobrze zdefiniowane CCC = 0.
- Semantyka liczebności kwalifikowanej (N): kwalifikacja kohorty wyłącznie na podstawie
metadanych kwalifikacyjnych; niepowodzenia ekstrakcji (NaN/Inf) zmniejszają
n_finite_pairs, nigdyn_eligible_paired_subjects. Bez imputacji wartości cech. - Pełne omówienie: Korelacja, konkordancja i zgodność.
Bootstrap dla par + ziarno — zamrożony kontrakt CI
10,000 replikacji · jednostka losowania = para pomiarów jednej osoby (oba skany są
losowane łącznie; niezależne losowanie obserwacji dla Scan1/Scan2 niszczy sparowanie) · ziarno
1729 · CI = percentyle 2.5/97.5 prawidłowych replikacji CCC · CI raportowane
tylko wtedy, gdy odsetek prawidłowych replikacji ≥ 0.95 · replikacje
nieprawidłowe (CCC niezdefiniowane) są zliczane, nigdy zastępowane · NOT_RUN
(punktowe CCC nie nadaje się do raportowania; liczby 0, odsetek null) a RUN —
jawny zapis wykonania. Bootstrap szacuje niepewność; nie tworzy nowych danych
biologicznych (wybór możliwy do obrony i zamrożony — nie jedyna metoda estymacji
przedziału). Ziarno: odtworzenie wymaga tego samego ziarna oraz tej samej
implementacji PRNG i przypiętego środowiska (ziarno jest jednym elementem
proweniencji, a nie całym kontraktem odtwarzalności); 42 i 1729 nie różnią się
znaczeniem statystycznym — określenie z góry zapobiega dobieraniu wyniku;
zamrożony zapis pochodzenia wyklucza swobodne zmiany po sprawdzeniu danych. Pełne omówienie:
Niepewność dla danych sparowanych i odtwarzalność.
Zamrożone zasady raportowalności i punkt odniesienia
REPORTABLE wymaga ≥ 25 prawidłowych par test–retest o skończonych wartościach (istniejąca
konwencja kwalifikacji RIDER) ORAZ matematycznie zdefiniowanego CCC; dokładne
przyczyny NOT_REPORTABLE stanowią część metadanych kwalifikacji projektu.
CCC ≥ 0.90 jest określonym z góry
opisowym punktem odniesienia („wysoka powtarzalność”), raportowanym jako liczby/odsetki —
NIE jest kryterium zaliczenia/niezaliczenia ani selekcją cech; niskie CCC jest
pełnoprawnym materiałem dowodowym; cech nigdy nie odrzuca się po cichu. Progi spotykane w literaturze
(przedziały ICC/CCC ~0.75/0.85/0.90) są konwencjami zależnymi od kontekstu —
raportuj rozkłady.
Odporność — trzy poziomy
- Powtarzalność (ten sam skaner/sesja) — powtórzenia RIDER tego samego dnia, to samo ustawienie.
- Odporność/zgodność rekonstrukcji (ta sama akwizycja, inna rekonstrukcja) — 15 par ustawień.
- Odtwarzalność (między skanerami/ośrodkami/protokołami) — najtrudniejsze kryterium.
- Perturbacja (niewielka zmiana maski/parametrów) = zawsze dostępny odpowiednik. Jeśli stabilność służy do selekcji, filtruj wewnątrz walidacji.
Kontrole negatywne i wartości odniesienia — falsyfikacja deklarowanego sygnału
Drabina wartości odniesienia: kliniczna → objętość → kształt → first-order →
tekstura → pełny zestaw. Wzrost względem objętości jest kryterium, którego
większość twierdzeń o teksturze nigdy nie spełnia. Rozróżnienia: permutacja etykiet
(kontrola poprawności procesu) · negatywna kontrola reprezentacji (trafność — np.
przetasowanie wokseli ROI: zachowuje maskę/objętość/kształt/histogram, niszczy
organizację przestrzenną) · ablacja (przypisanie wkładu komponentu). Zweryfikowane
źródła: Welch et al., Radiother Oncol 2019;130:2-9, PMID 30416044
(sygnatura typu Aerts = surogat objętości po przetasowaniu; publikacja recenzowana);
READII-2-ROQC, arXiv:2607.28423 (preprint; 9 konfiguracji kontrolnych, 3,552
guzy, zakłócenie związane z tłem w modelu bazowym). Nieprzejście kontroli
falsyfikuje interpretację teksturalną; przejście kontroli nie dowodzi przyczynowości (fizyka akwizycji
również ma organizację przestrzenną). Pełne omówienie:
Falsyfikacja, modele bazowe i kontrole negatywne.
Definicja regionu — wewnątrz / wokół / wiele regionów
feature = f(image, region definition, geometry, preprocessing, implementation). Pierścienie w mm na określonej siatce (nigdy w liczbie wokseli); dilation − tumour = ring; erosion = core; przytnij pierścienie do anatomicznie znaczącej tkanki i raportuj wykluczenia. Zmiany regionu wzmacniają wrażliwość na segmentację i odstęp, a ich wpływ zależy od wielkości zmiany. Przeszukiwanie wielu szerokości pierścienia (2/3/5/7 mm …) oznacza wielokrotność porównań: „optymalna szerokość” jest swoista dla badania (zweryfikowane, recenzowane przykłady NSCLC wybrały 3 mm dla jednej kohorty/punktu końcowego i 6 mm dla innej). Pełne omówienie: Gdzie odbywa się pomiar, rozdział 4.
Radiomika delta — ujęcie podłużne
Delta = pomiar pochodny: bezwzględny / względny / logarytm ilorazu, wybrany przed poznaniem wyników; odstęp + kontekst leczenia są częścią definicji. Powtarzalność (test–retest) = poziom szumu — zmiana poniżej tego poziomu jest niemożliwa do interpretacji; zmiana powyżej nadal jest jedynie kandydatem, dopóki nie uwzględni się czynników zakłócających; nie istnieje uniwersalny próg. Przy dwóch punktach czasowych trzeba uwzględnić: zgodność protokołu (wyklucz niespójne pary), segmentacja w obu punktach, zmiana składu ROI, rejestracja (tylko dla analizy wokselowej), identyczne przetwarzanie wstępne. Jednostka statystyczna = para dla pacjenta; pomiar wyjściowy w zbiorze treningowym/pomiar w obserwacji kontrolnej w zbiorze testowym = przeciek. Zweryfikowane przykłady: prospektywne badanie PDAC NALIRIFOX (Transl Oncol 2026, doi:10.1016/j.tranon.2026.102900; 107→55, bootstrap; Δ-volume najsilniejszym predyktorem); zewnętrznie zwalidowane delty PDAC (Ann Surg Oncol 2024;31:2608-2620; najlepsze połączenie clinical+delta). Pełne omówienie: Zmiana w czasie i bezwzględny błąd pomiaru.
Surowa odporność a harmonizacja — kolejność
Najpierw zmierz surową wrażliwość na rekonstrukcję; harmonizacja jest interwencją wykonywaną po ustaleniu wartości wyjściowej, jako odrębny, zamrożony eksperyment. Ograniczenia ComBat (Johnson 2007; przewodnik po radiomice Orlhac 2022): dostosowuje rozkłady cech, nie może odtworzyć fizyki utraconej podczas akwizycji/rekonstrukcji; zakłada niezależność efektów partii od wyniku; dopasowanie tylko na danych treningowych (w przeciwnym razie przeciek); udokumentowano przypadki niespełnienia założeń. Pełne omówienie: Harmonizacja i przekazanie do modelu, Studium przypadku: pomiar przed interwencją.
Warstwy standaryzacji
- IBSI 1 — Zwanenburg et al., Radiology 2020;295(2):328-338, PMID
32154773, doi:10.1148/radiol.2020191145. 169 standaryzowanych cech + referencyjny proces przetwarzania. Definiuje sposób obliczania cechy. - IBSI 2 — Whybra et al., Radiology 2024, doi:10.1148/radiol.231319. Standaryzowane filtry (LoG, wavelet, Riesz).
- QIBA (RSNA, zał. 2007; rsna.org/QIBA) — ramy wartości pomiaru: Profile formułuje Claim dotyczące działania (obciążenie + powtarzalność) biomarkera w ramach protokołu. Definiuje wartość pomiaru.
- CLEAR — Kocak et al., Insights Imaging 2023;14:75, PMID
37142815, PMCIDPMC10160267. Raportowanie radiomiki (58 pozycji, popierane przez ESR/EuSoMII; CLEAR-E3 + METRICS). Definiuje, co badanie musi raportować.
Relacja: QIBA (wartość pomiaru) → IBSI 1/2 (obliczenia) → PyRadiomics (jedna implementacja, dostosowana do IBSI i o udokumentowanej semantyce) → CLEAR (raportowanie). Są to różne, uzupełniające się warstwy; artykuł nie zastępuje standardu, a implementacja nie jest standardem.
Narzędzia
- PyRadiomics — implementacja (typy obrazów, binWidth, zmiana próbkowania, klasy cech, parametry filtrów przez YAML; weryfikacja ustawień efektywnych). Przypnij wersję i commit; gdy wymagana jest ścisła odtwarzalność wyników między programami, przeczytaj uwagi dotyczące każdej cechy.
- SlicerRadiomics — PyRadiomics jako rozszerzenie 3D Slicer (interaktywne budowanie intuicji).
- IBSI — warstwa standaryzacji (nie oprogramowanie).
- TRACE-CT wykorzystuje zatwierdzony w repozytorium YAML PyRadiomics ze skrótem kontrolnym oraz manifest.
Co zwykle idzie źle
- Nazywanie cech biomarkerami; nieraportowane
binWidth/odstęp/interpolacja/ rekonstrukcja; łączenie rekonstrukcji; przekazywanie jawnie binarnej maski dalej jako ułamkowej po interpolacji liniowej bez zadeklarowanego progowania/ponownej binaryzacji (rozdz. 4); podwójna zmiana próbkowania; mylenie ograniczenia wartości z resegmentacją; raportowanie Pearson r jako „powtarzalności”; selekcja cech przed podziałem danych albo ukryta pod nazwą „filtra stabilności”; stosowanie ComBat globalnie (przeciek), przed pomiarem wartości wyjściowej lub gdy partia koreluje z wynikiem; ufaniep >> n, ponieważ CV wygląda dobrze; mylenie stabilności z wartością predykcyjną i użytecznością kliniczną. - Brak objętości/klinicznej wartości odniesienia przed twierdzeniem o teksturze; „optymalna” szerokość pierścienia wybrana post hoc; interpretacja cech delta bez poziomu szumu wyznaczonego przez powtarzalność; rozdzielenie wierszy wartości wyjściowych i kontrolnych między zbiory treningowy i testowy.
Powiązanie z TRACE-CT — tylko do odczytu
Implementację podanych wyżej zamrożonych wartości protokołu M1-09 — narzędzia do ekstrakcji, obsługi zamrożonej konfiguracji, weryfikacji, obliczeń statystycznych i kontroli determinizmu — zinwentaryzowano w mapie nauki TRACE-CT, wraz ze statusem wykonania projektu. Wyniki pomiarów uzyskane w projekcie odnoszą się wyłącznie do odpowiednich kohort i protokołów, a nie stanowią uniwersalnego twierdzenia o rodzinie cech.
Materiał rozszerzony
- IBSI 1 (PMID
32154773), IBSI 2 (doi:10.1148/radiol.231319), QIBA (rsna.org/QIBA), CLEAR (PMID37142815). - Dokumentacja PyRadiomics (cechy, dostosowywanie).
- Lin LI. CCC. Biometrics 1989;45(1):255-268 (PMID
2720055, doi:10.2307/2532051); Efron B. Bootstrap. Ann Statist 1979;7(1):1-26 (doi:10.1214/aos/1176344552). - TCIA RIDER Lung CT v3
(strona kolekcji,
DOI
10.7937/K9/TCIA.2015.U1X8A5NR); Zhao B et al., Radiology 2009;252(1):263-272 (projekt powtórzenia tego samego dnia; PMID19561260, doi:10.1148/radiol.2522081593). - Lambin et al. (początki radiomiki) + współczesna krytyka odtwarzalności; należy je czytać łącznie.
Co zapamiętać — podsumowanie rozdziału
- Proces = łańcuch wyborów; ustal i raportuj każdy z nich (binWidth, odstęp, interpolacja, kernel, 2D/3D, kolejność operacji, wersja).
- Warstwa pomiarowa leży między biologią a modelami; odporna ≠ predykcyjna ≠ użyteczna klinicznie; modele wykorzystują zastępcze sygnały pochodzące z procesu przetwarzania.
- Zamrożony projekt M1-09: macierz sześciu ustawień; 107 cech Original 3D (manifest ze skrótem kontrolnym); CCC (momenty populacyjne, prosta identyczności); bootstrap z losowaniem par dla osób (10,000, ziarno 1729, ≥0.95 prawidłowych replikacji, percentylowy CI); CCC ≥ 0.90 wyłącznie opisowe; zgodnie z projektem bez selekcji/harmonizacji/modelowania.
- Powtarzalność ≠ zgodność rekonstrukcji ≠ odtwarzalność; zmierz surową wartość wyjściową przed każdą interwencją; ComBat zmienia rozkłady, nie fizykę.
- Warstwy standaryzacji: QIBA (wartość) → IBSI 1/2 (obliczenia) → PyRadiomics (implementacja) → CLEAR (raportowanie).
© 2026 Adrian Tkacz · BioMedical-IT
Oryginalne teksty i ilustracje są udostępniane na licencji Creative Commons Uznanie autorstwa–Użycie niekomercyjne 4.0 Międzynarodowe (CC BY-NC 4.0), o ile nie zaznaczono inaczej. Przy ponownym wykorzystaniu proszę podać Adrian Tkacz / BioMedical-IT jako autora i zamieścić odnośnik do oryginalnego źródła. Materiały osób trzecich zachowują własne prawa i warunki licencyjne.