napari: Trình xem ảnh đa chiều cho Python
napari là gì?
Được dẫn dắt bởi các chuyên gia về kính hiển vi và Python và được xây dựng bởi một cộng đồng ngày càng phát triển, napari ¹ là một dự án nguồn mở được thiết kế để duyệt, chú thích và phân tích các hình ảnh lớn đa chiều. napari đã nhanh chóng trở thành một công cụ thiết yếu đối với hầu hết các nhà phân tích hình ảnh do khả năng trực quan hóa hiệu suất cao và khả năng khám phá nhiều loại dữ liệu hình ảnh, bao gồm kính hiển vi, hình ảnh y tế, dữ liệu không gian địa lý, v.v.
Tại sao sử dụng napari?
napari hỗ trợ nhiều loại tệp và dữ liệu, và nếu một tệp không được hỗ trợ nguyên bản thì gần như chắc chắn sẽ có một plugin có khả năng tải nó. Điều này dẫn tôi đến một trong những khía cạnh quan trọng nhất của napari, đó là các plugin. napari có một cộng đồng vô cùng tích cực với các plugin được phát triển và phát hành gần như hàng ngày, bao gồm tất cả các khía cạnh của phân tích hình ảnh. Hơn nữa, do napari được viết bằng Python nên nó đã trở nên đặc biệt hấp dẫn đối với những người trong cộng đồng lập trình khoa học do tính phổ biến của ngôn ngữ này. Vì nó được viết bằng Python nên nó cũng mở ra cơ hội tích hợp hệ sinh thái rộng lớn của các gói máy học, học sâu và khoa học dữ liệu.
Dầu napari hoạt động như thế nào?
Một trong những khái niệm chính cần hiểu về napari là ý tưởng về các lớp. Mỗi hình ảnh bạn mở trong trình xem sẽ có lớp riêng, vì vậy bạn có thể xem nhiều hình ảnh hoặc nhiều lớp cùng một lúc. napari có bảy loại lớp riêng biệt bao gồm, Image, Labels, Points, Shapes, và Surface, với mỗi lớp tương ứng với một loại dữ liệu, trực quan hóa và tương tác khác nhau. Tuy nhiên, tôi nên lưu ý rằng mặc dù các lớp , và đã được phát triển tốt và sẵn sàng để sử dụng, nhưng các lớp , và vẫn đang được thử nghiệm và vẫn đang được phát triển. Tất cả các lớp hỗ trợ nTracksVectorsImageLabelsPointsSurfaceTracksVectorsdữ liệu chiều và có thể được trực quan hóa và duyệt nhanh chóng ở dạng 2D hoặc 3D. Cuối cùng, bất kỳ thứ gì có trong trình xem cũng có thể truy cập được theo chương trình thông qua bảng điều khiển IPython mà tôi sẽ giải thích thêm một chút về sau. Bây giờ chúng ta đã có ý tưởng sơ bộ về napari là gì, hãy bắt đầu tải xuống!
Cài đặt và chạy napari
1. Cài đặt Mamba (https://mamba.readthedocs.io/)
Một cách đơn giản và được đề xuất để tải xuống hầu hết các công cụ Python tiêu chuẩn là thông qua Mamba. Tóm lại, Mamba là một hệ thống quản lý gói cho phép người dùng tải các gói Python hoặc R về một môi trường mà họ có thể sử dụng.
Để cài đặt Mamba trên Windows , hãy truy cập trang web sau (https://github.com/conda-forge/miniforge#mambaforge) và tải xuống đúng phiên bản Mambaforge cho hệ thống của bạn.
Nếu bạn đang sử dụng Mac hoặc Linux, hãy bắt đầu bằng cách mở terminal và nhập lệnh sau…
curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-$(uname)-$(uname -m).sh"
bash Mambaforge-$(uname)-$(uname -m).sh
Để kiểm tra xem Mamba đã được cài đặt đúng chưa, bạn có thể mở terminal hoặc command shell và gõ lệnh sau
mamba -V
Để biết thêm chi tiết về Mamba, hãy xem những bài viết tuyệt vời này của Tiến sĩ Robert Haase và Mara Lampert ở phần sau:
- 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
Khi một người muốn tải xuống napari, cách tốt nhất là tạo môi trường Mamba. Môi trường Mamba sẽ đóng vai trò là nơi chứa tất cả các gói Python mà chúng ta cần để bắt đầu sử dụng napari. Để làm điều này, trước tiên chúng ta phải chạy dòng sau trong thiết bị đầu cuối:
mamba create -n napari_env python=3.9
- Từ
createkhóa nói với Mamba rằng chúng tôi muốn tạo một môi trường mới. - Lá
-ncờ đang báo cho Mamba biết câu lệnh tiếp theo là tên của môi trường mới. - Đang
napari_envkhai báo tên của môi trường mới. - Thông
python=3.8báo cho biết phiên bản Python nào sẽ được cài đặt với môi trường mới.
Khi điều này hoàn thành, chúng ta cần kích hoạt môi trường. Điều này có nghĩa là khi chúng ta cài đặt các gói Python, tất cả các gói sẽ được cài đặt trong môi trường chứ không phải ở nơi nào khác trong máy tính.
mamba activate napari_env
- Từ
activatekhóa yêu cầu Mamba kích hoạt một môi trường. - Nó
napari_envnói cho Mamba biết môi trường nào sẽ được kích hoạt.
3. Cài đặt napari
mamba install napari -c conda-forge
- Lệnh
installcho Mamba biết nên cài đặt gói Python nào. - Từ này
naparilà tên của gói Python sẽ được cài đặt. - Đang
-ckhai báo sẽ cài đặt từ kênh nào. - Đây
conda-forgelà kênh để cài đặt napari.
Nếu napari đã cài đặt thành công, thì việc chạy nó sẽ đơn giản bằng cách nhập lệnh sau vào terminal
napari
Giao diện người dùng napari
Bây giờ chúng ta sẽ đi vào các yếu tố khác nhau của giao diện người dùng napari.
- Điều khiển lớp — Tiện ích này sẽ cho phép bạn thao tác các thuộc tính cụ thể của một lớp. Các điều khiển sẽ thay đổi tùy thuộc vào loại lớp bạn đã chọn. Đối với một hình ảnh, bạn có thể thay đổi các thuộc tính như bản đồ màu, độ mờ, độ tương phản, v.v.
- Xóa lớp đã chọn — Thao tác này sẽ xóa lớp đã chọn khỏi Trình xem.
- Lớp nhãn mới — Điều này sẽ tạo một
Labelslớp napari mới và thêm nó vào Trình xem. Lớp nàyLabelscho phép bạn lấy một mảng các số nguyên và hiển thị mỗi số nguyên dưới dạng một màu ngẫu nhiên khác với màu nền 0 được hiển thị trong suốt. - Lớp hình dạng mới — Điều này sẽ tạo một
Shapeslớp napari mới và thêm nó vào Trình xem. Lớp nàyShapescho phép bạn hiển thị danh sách các mảng NxD, trong đó mỗi mảng tương ứng với một hình dạng. - Lớp điểm mới — Thao tác này sẽ tạo một napari mới
Pointsvà thêm nó vào Trình xem. Lớp nàyPointscho phép bạn hiển thị một mảng NxD của N điểm trong tọa độ D. - Danh sách lớp — Thao tác này sẽ hiển thị cho bạn tất cả các lớp bạn đã mở trong trình xem. Bạn có thể mở nhiều lớp cùng lúc với mỗi lớp là các loại lớp khác nhau, chẳng hạn như
Image,Shapes,Labelsv.v. 6 .1) Điều này sẽ cho phép bạn hiển thị hoặc ẩn một lớp. 6 .2) Biểu tượng này cho biết đó là loại lớp nào. - Bảng điều khiển IPython - Thao tác này sẽ hiển thị/ẩn bảng điều khiển IPython tích hợp cho phép bạn tương tác theo chương trình với người xem.
- Chuyển đổi ndisplay — Thao tác này sẽ thay đổi Trình xem để xem bất kỳ lớp hiển thị nào trong không gian ba chiều.
- Thay đổi thứ tự của trục hiển thị — Thao tác này sẽ chuyển vị một lớp trên tất cả các trục của nó.
- Thứ tự chuyển đổi của hai trục hiển thị cuối cùng — Thao tác này sẽ chuyển đổi một lớp chỉ trên hai trục hiển thị cuối cùng của nó.
- Chế độ lưới — Điều này sẽ thay đổi Trình xem để hiển thị tất cả các lớp trong bố cục lưới.
- Đặt lại trình xem — Thao tác này sẽ đặt lại Trình xem để hiển thị một lớp ở trạng thái ban đầu. Điều này đặc biệt hữu ích khi bạn đã cuộn hoặc phóng to đến mức không biết mình đang ở đâu!
- Thanh cuộn — Nếu bạn có hình ảnh > 2 chiều, thanh này sẽ cho phép bạn cuộn qua từng phần của hình ảnh.
Để chạy napari và xem hình ảnh từ tập lệnh Python, bạn phải bắt đầu bằng cách nhập napari, sau đó thêm hình ảnh đã tải vào trình xem bằng lệnh view_image, sau đó chạy napari bằng napari.runlệnh.
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
Chúng ta có thể xem chúng cạnh nhau bằng cách bật chế độ lưới nhìn thấy trong hộp màu xanh lam, điều này sẽ cho chúng ta một cái gì đó như thế này…
Plugin cho napari
Một trong những yếu tố quan trọng khiến naparis trở nên phổ biến gần đây là sự phát triển rộng rãi của các plugin trong cộng đồng. Plugin là công cụ cho phép nhà phát triển tùy chỉnh và mở rộng napari bằng cách thêm một tính năng cụ thể, có thể bao gồm từ công cụ phân đoạn đến đăng ký hình ảnh và cách chính để tìm các plugin như vậy là thông qua trung tâm napari .
Trung tâm napari là một dịch vụ của Chan Zuckerberg Initiative phối hợp với napari đang cố gắng giải quyết nhiều thách thức và nhu cầu trong việc tìm giải pháp phân tích cho các vấn đề về hình ảnh. Nó cho phép bạn duyệt qua nhiều loại plugin đang được phát triển bởi cộng đồng napari bằng cách cung cấp cho bạn một mô tả ngắn gọn về chức năng của từng plugin cũng như cách cài đặt chúng.
Tổng quan
Trong bài viết này, chúng tôi đã trình bày ngắn gọn các nguyên tắc cơ bản của napari, bắt đầu bằng việc trả lời các câu hỏi cơ bản về “napari là gì”, “tại sao lại sử dụng napari” và “napari hoạt động như thế nào”, để chạy napari từ tập lệnh Python. Hy vọng rằng sau khi đọc bài viết này, bạn sẽ cảm thấy thoải mái khi đi và khám phá hệ sinh thái ngày càng phát triển của các plugin napari và sử dụng napari cho các nhu cầu chụp ảnh chung của bạn.
Cảm ơn rất nhiều nếu bạn đã đọc đến đây, trong những tháng tới tôi sẽ phát hành nhiều bài viết hơn về napari và phân tích hình ảnh sinh học nói chung, vì vậy nếu có bất kỳ chủ đề nào bạn muốn được đề cập, đừng ngần ngại để lại nhận xét hoặc gửi cho tôi tin nhắn!
Nhìn nhận
Tôi cũng muốn cảm ơn Tiến sĩ Martin Jones và Tiến sĩ Robert Haase vì sự hỗ trợ của họ trong việc viết và xem xét bài viết này.
Người giới thiệu
- người đóng góp napari (2019). napari: trình xem ảnh đa chiều cho python. 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 và những người đóng góp hình ảnh scikit. scikit-image: Xử lý ảnh trong Python . Ngang hàng 2:e453 (2014)https://doi.org/10.7717/peerj.453
- Harris, CR, Millman, KJ, van der Walt, SJ và cộng sự. Lập trình mảng với NumPy . Thiên nhiên 585, 357–362 (2020). DOI: 10.1038/s41586–020–2649–2 . ( Nhà xuất bản liên kết ).
- 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 và Cộng tác viên SciPy 1.0. (2020) SciPy 1.0: Các thuật toán cơ bản cho điện toán khoa học bằng Python . Phương pháp tự nhiên , 17(3), 261–272.
- Haase, R., Royer, LA, Steinbach, P. và cộng sự. CLIJ: Xử lý hình ảnh tăng tốc GPU cho mọi người. Phương pháp Nat 17 , 5–6 (2020).https://doi.org/10.1038/s41592-019-0650-1

![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































