napari: Python için Çok Boyutlu Bir Resim Görüntüleyici
napari nedir?
Mikroskopi ve Python uzmanları tarafından yönetilen ve sürekli büyüyen bir topluluk tarafından geliştirilen napari ¹, büyük çok boyutlu görüntülerin taranması, bunlara açıklama eklenmesi ve analiz edilmesi için tasarlanmış açık kaynaklı bir projedir. Napari, yüksek performanslı görselleştirmeleri ve mikroskopi, tıbbi görüntüleme, jeo-uzamsal veriler ve daha fazlası dahil olmak üzere çok çeşitli görüntüleme verilerini keşfetme yeteneği nedeniyle çoğu görüntü analisti için kısa sürede önemli bir araç haline geldi.
Neden napari kullanıyorsunuz?
napari birçok dosya ve veri türünü destekler ve bir dosya yerel olarak desteklenmiyorsa, o zaman neredeyse kesinlikle onu yükleyebilen bir eklenti olacaktır. Bu da beni napari'nin en önemli yönlerinden biri olan eklentilere götürüyor. napari, görüntü analizinin tüm yönlerini kapsayan, neredeyse her gün geliştirilen ve yayınlanan eklentilerle inanılmaz derecede aktif bir topluluğa sahiptir. Ayrıca, napari'nin Python'da yazılması nedeniyle, dilin popülaritesi nedeniyle bilimsel programlama topluluğundakiler için özellikle çekici hale geldi. Python'da yazıldığı için, makine öğrenimi, derin öğrenme ve veri bilimi paketlerinden oluşan geniş ekosistemini entegre etmek için kapıları da açar.
Napar nasıl çalışır?
Napari hakkında anlaşılması gereken temel kavramlardan biri katmanlar fikridir. Görüntüleyicide açtığınız her görüntünün kendi katmanı olacaktır, böylece aynı anda birden çok görüntüyü veya katmanı görüntüleyebilirsiniz. Imagenapari, , Labels, Points, Shapes, Surfaceve dahil olmak üzere yedi farklı katman türüne sahiptir Tracksve Vectorsher katman farklı bir veri türüne, görselleştirmeye ve etkileşime karşılık gelir. ImageBununla birlikte , Labelsve Pointskatmanlarının iyi geliştirilmiş ve kullanıma hazır olmasına rağmen, Surfaceve Trackskatmanlarının Vectorsdeneysel olduğunu ve halen geliştirilme aşamasında olduğunu not etmeliyim . Tüm katmanlar n'yi desteklerboyutlu veriler ve hızlı bir şekilde görselleştirilebilir ve 2B veya 3B olarak göz atılabilir. Son olarak, görüntüleyicide bulunan her şeye IPython konsolu aracılığıyla programlı olarak erişilebilir, buna daha sonra biraz daha ayrıntılı olarak değineceğim. Şimdi napari'nin ne olduğu hakkında kabaca bir fikrimiz var, onu indirmeye başlayalım!
napari'yi kurma ve çalıştırma
1. Mamba'yı Yükleme (https://mamba.readthedocs.io/)
Çoğu standart Python aracını indirmenin basit ve önerilen bir yolu Mamba'dır. Kısaca Mamba, kullanıcıların Python veya R paketlerini kullanabilecekleri bir ortama indirmelerini sağlayan bir paket yönetim sistemidir.
Mamba'yı Windows'a yüklemek için aşağıdaki web sayfasına gidin (https://github.com/conda-forge/miniforge#mambaforge) ve sisteminiz için doğru Mambaforge sürümünü indirin.
Mac veya Linux kullanıyorsanız, terminali açıp aşağıdaki komutu girerek başlayın…
curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-$(uname)-$(uname -m).sh"
bash Mambaforge-$(uname)-$(uname -m).sh
Mamba'nın doğru kurulduğunu test etmek için terminal veya komut kabuğunu açıp aşağıdaki komutu yazabilirsiniz.
mamba -V
Mamba hakkında daha fazla ayrıntı için aşağıdaki Dr. Robert Haase ve Mara Lampert tarafından yazılan bu harika makalelere bakın:
- https://focalplane.biologists.com/2022/12/08/managing-scientific-python-environments-using-conda-mamba-and-friends/
- https://biapol.github.io/blog/mara_lampert/getting_started_with_mambaforge_and_python/readme.html
Biri napari indirmek istediğinde, genellikle bir Mamba ortamı oluşturmak en iyi uygulamadır. Mamba ortamları, napari kullanmaya başlamak için ihtiyaç duyduğumuz tüm Python paketleri için kap görevi görecek. Bunu yapmak için önce terminalde aşağıdaki satırı çalıştırmalıyız:
mamba create -n napari_env python=3.9
- Anahtar kelime
create, Mamba'ya yeni bir ortam yaratmak istediğimizi söylüyor. - Bayrak
-n, Mamba'ya bir sonraki ifadenin yeni ortamın adı olduğunu söylüyor. napari_envYeni ortamın adını bildiriyor .python=3.8Yeni ortamla birlikte Python'un hangi sürümünün kurulacağını belirtir .
Bu tamamlandığında, ortamı etkinleştirmemiz gerekir. Bu, Python paketlerini kurmaya gittiğimizde, tüm paketlerin bilgisayar içinde başka bir yerde değil, ortam içinde kurulacağı anlamına gelir.
mamba activate napari_env
- Anahtar kelime
activate, Mamba'ya bir ortamı etkinleştirmesini söyler. napari_envMamba'ya hangi ortamın etkinleştirileceğini söylüyor .
3. Napari'nin Kurulumu
mamba install napari -c conda-forge
- Komut
install, Mamba'ya hangi Python paketinin kurulacağını söylüyor. - Sözcük
naparikurulacak Python paketinin adıdır. -cHangi kanaldan kurulacağını bildiriyor .conda-forgenapari'nin kurulacağı kanaldır .
Napari başarıyla kurulduysa, çalıştırılması terminalde aşağıdaki komutu girmek kadar basit olmalıdır.
napari
Napar kullanıcı arabirimi
Şimdi napari kullanıcı arayüzünün farklı öğelerine geçeceğiz.
- Katman kontrolleri — Bu pencere öğesi, bir katmanın belirli niteliklerini değiştirmenize olanak tanır. Kontroller, seçtiğiniz katman türüne bağlı olarak değişecektir. Bir görüntünün renk haritası, opaklığı, kontrastı vb. gibi niteliklerini değiştirebilirsiniz.
- Seçilen Katmanı Sil — Bu, seçilen katmanı Görüntüleyiciden siler.
- Yeni Etiketler Katmanı — Bu, yeni bir napari katmanı oluşturacak
Labelsve Görüntüleyiciye ekleyecektir. Katman,Labelsbir tamsayı dizisi almanıza ve her bir tamsayıyı farklı bir rasgele renk olarak görüntülemenize olanak tanır ve arka plan rengi 0 şeffaf olarak işlenir. - Yeni Şekil Katmanı — Bu, yeni bir napari katmanı oluşturacak
Shapesve Görüntüleyiciye ekleyecektir. KatmanShapes, her dizinin bir şekle karşılık geldiği NxD dizilerinin bir listesini görüntülemenizi sağlar. - Yeni Nokta Katmanı — Bu, yeni bir napari oluşturacak
Pointsve Görüntüleyiciye ekleyecektir. Katman,PointsD koordinatlarında N noktadan oluşan bir NxD dizisini görüntülemenizi sağlar. - Katman listesi — Bu, görüntüleyicide açtığınız tüm katmanları gösterir.
ImageHer biri ,Shapes, vb. gibi farklı katman türleri olan birden çok katmanı aynı anda açabilirsiniz.Labels6 .1) Bu, bir katmanı görünür yapmanıza veya gizlemenize olanak tanır. 6 .2) Bu simge, ne tür bir katman olduğunu gösterir. - IPython Konsolu — Bu, görüntüleyiciyle programatik olarak etkileşime girmenizi sağlayacak yerleşik IPython konsolunu gösterecek/gizleyecektir.
- Toggle ndisplay — Bu, Görüntüleyiciyi görünür katmanları üç boyutlu olarak görüntüleyecek şekilde değiştirir.
- Görünür eksenin sırasını değiştir — Bu, bir katmanı tüm eksenleri boyunca transpoze eder.
- Son iki görünür eksenin transpoze sırası — Bu, bir katmanı yalnızca son iki görünür ekseni boyunca transpoze eder.
- Izgara modu — Bu, Görüntüleyiciyi tüm katmanları bir ızgara düzeninde gösterecek şekilde değiştirir.
- Görüntüleyiciyi sıfırla — Bu, Görüntüleyiciyi bir katmanı orijinal durumunda gösterecek şekilde sıfırlar. Bu, özellikle nerede olduğunuzu bilemeyeceğiniz kadar kaydırdığınızda veya yakınlaştırdığınızda kullanışlıdır!
- Kaydırma çubuğu — 2 boyutludan büyük bir görüntünüz varsa, bu, görüntünün her diliminde kaydırma yapmanızı sağlar.
Napari'yi çalıştırmak ve bir Python betiğinden bir görüntüyü görüntülemek için, napari'yi içe aktararak başlamalı, ardından komutla görüntüleyiciye yüklü bir görüntü eklemeli view_imageve ardından napari.runkomutu kullanarak napari'yi çalıştırmalısınız.
import napari
from skimage import data
# here we initialise the napari viewer
viewer = napari.Viewer()
# now we're adding the data.cell() image to the viewer
viewer.add_image(data.cell())
# calling napari and telling it begin running
napari.run()
napari viewer showing skimage cell dataset | https://scikit-image.org/docs/stable/api/skimage.data.html#cell
import napari
from skimage.io import imread
# reading our image and storing it into the variable img
img = imread('path/to/image.png')
# here we initialise the napari viewer
viewer = napari.Viewer()
# adding the image to the napari viewer
viewer.add_image(img)
# running napari
napari.run()
napari viewer showing EPFL mitochondria dataset | https://www.epfl.ch/labs/cvlab/data/data-em/
import napari
from skimage.data import gravel
# creating a variable to store our sample image
original_img = gravel()
# the threshold value to be applied to the image
thresh = 150
# applying the threshold to the image
thresholded_img = original_img > thresh
# creating a napari viewer
viewer = viewer = napari.Viewer()
# adding the original image to the viewer
viewer.add_image(original_img)
# adding our new thresholded image to the viewer
viewer.add_image(thresholded_img)
# running napari
napari.run()
napari viewer showing skimage gravel dataset | https://scikit-image.org/docs/stable/api/skimage.data.html#gravel
Mavi kutuda görülen ızgara modunu değiştirerek onları yan yana görebiliriz, bu bize şöyle bir şey verecektir…
napari için eklentiler
Son zamanlarda Napari'nin popülaritesindeki en önemli faktörlerden biri, geniş topluluk eklentileri geliştirmesi olmuştur. Eklentiler, geliştiricilerin, segmentasyon araçlarından görüntü kaydına kadar değişen belirli bir özellik ekleyerek napari'yi özelleştirmesine ve genişletmesine olanak tanıyan araçlardır ve bu tür eklentileri bulmanın ana yolu, napari merkezi aracılığıyladır .
Napari merkezi, Chan Zuckerberg Girişimi'nin Napari ile işbirliği içinde sunduğu ve görüntüleme sorunlarına analiz çözümleri bulmadaki birçok zorluğu ve ihtiyacı çözmeye çalışan bir hizmetidir . Size her eklentinin ne yaptığına ve bunları nasıl kuracağınıza dair kısa bir açıklama vererek, napari topluluğu tarafından geliştirilen eklenti yelpazesine göz atmanıza olanak tanır.
genel bakış
Bu yazıda, "napari nedir", "napari neden kullanılır" ve "napari nasıl çalışır" gibi temel soruları yanıtlayarak başlayarak, napari'yi bir Python betiğinden çalıştırmaya kadar kısaca napari'nin temellerini ele aldık. Umarız bu makaleyi okuduktan sonra gidip sürekli büyüyen napari eklentileri ekosistemini keşfetmek ve genel görüntüleme ihtiyaçlarınız için napari kullanmak konusunda kendinizi rahat hissedeceksiniz.
Buraya kadar okuduysanız çok teşekkürler, önümüzdeki aylarda napari ve genel biyogörüntü analizi hakkında daha fazla makale yayınlayacağım. İleti!
Teşekkür
Bu makalenin yazılması ve gözden geçirilmesindeki yardımları için Dr Martin Jones ve Dr Robert Haase'ye de teşekkür etmek isterim.
Referanslar
- napari katkıda bulunanlar (2019). napari: python için çok boyutlu bir resim görüntüleyici. doi:10.5281/zenodo.3555620
- Stéfan van der Walt, Johannes L. Schönberger, Juan Nunez-Iglesias, François Boulogne, Joshua D. Warner, Neil Yager, Emmanuelle Gouillart, Tony Yu ve scikit-image katkıda bulunanlar. scikit-image: Python'da görüntü işleme . PeerJ 2:e453 (2014)https://doi.org/10.7717/peerj.453
- Harris, CR, Millman, KJ, van der Walt, SJ ve ark. NumPy ile dizi programlama . Doğa 585, 357–362 (2020). DOI: 10.1038/s41586–020–2649–2 . ( Yayıncı bağlantısı ).
- Pauli Virtanen, Ralf Gommers, Travis E. Oliphant, Matt Haberland, Tyler Reddy, David Cournapeau, Evgeni Burovski, Pearu Peterson, Warren Weckesser, Jonathan Bright, Stéfan J. van der Walt, Matthew Brett, Joshua Wilson, K. Jarrod Millman, Nikolay Mayorov, Andrew RJ Nelson, Eric Jones, Robert Kern, Eric Larson, CJ Carey, İlhan Polat, Yu Feng, Eric W. Moore, Jake VanderPlas, Denis Laxalde, Josef Perktold, Robert Cimrman, Ian Henriksen, EA Quintero, Charles R Harris, Anne M. Archibald, Antônio H. Ribeiro, Fabian Pedregosa, Paul van Mulbregt ve SciPy 1.0 Katkıda Bulunanlar. (2020) SciPy 1.0: Python'da Bilimsel Hesaplama için Temel Algoritmalar . Doğa Yöntemleri , 17(3), 261–272.
- Haase, R., Royer, LA, Steinbach, P. ve ark. CLIJ: Herkes için GPU hızlandırmalı görüntü işleme. Nat Yöntemleri 17 , 5–6 (2020).https://doi.org/10.1038/s41592-019-0650-1

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































