Tuyến Trần, MD
Lập trình & Phân tích

Chia sẻ Jupyter Notebook với reviewer thế nào cho gọn

Chia sẻ Jupyter Notebook với reviewer có ba cách chính. Mình so sánh nbviewer, Deepnote và xuất file HTML, cái nào hợp với nghiên cứu lâm sàng.

Chia sẻ Jupyter Notebook với reviewer có ba cách phổ biến: gửi đường dẫn xem qua nbviewer, mời vào một không gian làm việc trên Deepnote, hoặc xuất thẳng file ra HTML rồi đính kèm bản thảo. Mỗi cách hợp với một tình huống khác nhau, và chọn sai cách có thể khiến reviewer mất thời gian hoặc không mở được file của bạn.

Mình bắt đầu dùng Jupyter Notebook khi chuẩn bị dữ liệu cho một bài báo khoa học đang chờ phản biện, viết về ảnh hưởng của AI lên quá trình nghiên cứu. Phần phân tích văn bản trong bài đó chạy bằng Python, và khi cần cho người đánh giá độc lập xem lại từng bước, mình phải thử cả ba cách dưới đây trước khi biết cái nào thực sự hợp.

Vì sao không thể gửi thẳng file .ipynb

File Jupyter Notebook gốc có đuôi .ipynb, thực chất là một file định dạng JSON chứa cả mã, chữ, và kết quả từng bước. Mở đúng cách cần cài Python và Jupyter, hoặc ít nhất một trình đọc hỗ trợ định dạng này. Gửi thẳng file này cho một reviewer không rành lập trình gần như chắc chắn họ sẽ không mở được, hoặc mở ra thấy toàn mã thô không có định dạng.

Vấn đề thứ hai là quyền riêng tư dữ liệu. File .ipynb thường chứa luôn kết quả đã chạy, nếu dữ liệu gốc có thông tin nhạy cảm, gửi nguyên file có thể lộ nhiều hơn mức cần thiết. Cần chọn cách chia sẻ kiểm soát được nội dung hiển thị.

Cách 1: nbviewer, đơn giản và chỉ để xem

nbviewer là dịch vụ miễn phí render file Jupyter Notebook thành trang xem được trên trình duyệt, không cần cài gì thêm. Bạn tải file lên một kho lưu trữ công khai như GitHub, dán đường dẫn vào nbviewer, và có ngay một trang xem đẹp, giữ định dạng chữ, bảng, biểu đồ như trong Jupyter gốc.

Ưu điểm là nhanh và miễn phí, reviewer chỉ cần một đường dẫn, không cần tài khoản. Hạn chế là chỉ xem được, không chạy lại được mã, và bạn phải để file trên một kho công khai, không hợp nếu dữ liệu chưa được phép công bố.

Cách 2: Deepnote, khi reviewer muốn chạy thử lại mã

Deepnote là một không gian làm việc Jupyter Notebook chạy trên nền tảng đám mây, cho phép mời người khác vào xem và chạy lại mã trực tiếp trên trình duyệt, không cần cài đặt gì ở máy họ. Đây là lựa chọn hợp khi reviewer muốn tự kiểm tra một bước phân tích, ví dụ đổi tham số rồi xem kết quả thay đổi ra sao.

Hạn chế là cần tạo tài khoản và mời đúng địa chỉ thư điện tử, thêm một bước so với gửi đường dẫn đơn thuần. Với dữ liệu lâm sàng thật, cần kiểm tra kỹ chính sách lưu trữ và quyền truy cập trước khi đưa dữ liệu chưa ẩn danh lên bất kỳ nền tảng đám mây nào.

Cách 3: xuất ra HTML, ổn định nhất khi gửi kèm bản thảo

Lệnh jupyter nbconvert --to html ten_file.ipynb xuất toàn bộ notebook thành một file HTML độc lập, mở được bằng bất kỳ trình duyệt nào, không cần mạng, không cần tài khoản. Đây là cách mình dùng nhiều nhất khi gửi kèm bản thảo cho một tạp chí, vì file HTML nộp được như một tài liệu bổ sung thông thường, không phụ thuộc dịch vụ bên ngoài còn sống hay không tại thời điểm reviewer mở ra.

Nhược điểm là file tĩnh, không chạy lại được, và nếu notebook dài, file HTML xuất ra có thể khá nặng.

Chọn cách nào cho từng tình huống

Nếu chỉ cần cho reviewer xem qua cách bạn xử lý dữ liệu mà không quan tâm dữ liệu có công khai lâu dài không, dùng nbviewer là nhanh nhất. Nếu tạp chí hoặc phản biện yêu cầu khả năng tái lập kết quả, nghĩa là người đọc phải tự chạy lại được, Deepnote hoặc một dịch vụ tương đương là lựa chọn đúng. Nếu bạn cần một tài liệu ổn định gửi kèm bản thảo, không phụ thuộc dịch vụ ngoài, xuất HTML là an toàn nhất.

Với dữ liệu lâm sàng có thông tin định danh bệnh nhân, luôn ẩn danh hoá trước khi chọn bất kỳ cách nào trong ba cách trên, bất kể công cụ có ghi là riêng tư hay không.

Nếu bạn quen làm phân tích và viết báo trong R hơn là Python, quy trình tương đương dùng R Markdown hoặc Quarto, xuất thẳng ra Word hoặc PDF chuẩn tạp chí trong một bước, không cần công cụ ngoài để render. Bài quy trình R cho bài báo lâm sàng, từ CSV đến gtsummary mô tả một luồng làm việc từ dữ liệu thô đến bản thảo hoàn chỉnh mà mình đang dùng hằng ngày, và bài lộ trình tự học R cho bác sĩ là điểm bắt đầu nếu bạn chưa quen công cụ nào trong hai ngôn ngữ.

Khoá Làm chủ R cùng AI đi kèm hướng dẫn xuất báo cáo và bảng biểu chuẩn công bố ngay trong R, phù hợp nếu mục tiêu của bạn là có một quy trình chạy được từ dữ liệu đến bản thảo mà không phải học thêm một ngôn ngữ mới chỉ để trình bày kết quả cho reviewer xem.