Marimo - Notebook Reactive open-source untuk Python
(github.com/marimo-team)- Notebook untuk bereksperimen cepat dengan data dan model
- Eksekusi per sel, perhitungan otomatis, dan pembaruan
- Selalu bisa dijalankan ulang tanpa status tersembunyi
- Disimpan sebagai file Python sehingga Git-friendly
- Notebook dapat dijadikan pipeline atau dideploy sebagai web app interaktif
Lingkungan pemrograman reaktif
- marimo menjamin konsistensi antara kode notebook, output, dan status program.
- Saat sebuah sel dijalankan, marimo secara otomatis memperbarui sel yang mereferensikan variabel tersebut sehingga mencegah kesalahan akibat menjalankan ulang sel secara manual.
- Saat sebuah sel dihapus, marimo menghapus variabel tersebut dari memori program sehingga menghilangkan status tersembunyi.
- Notebook dijalankan dalam urutan deterministik berdasarkan referensi variabel, sehingga tidak bergantung pada posisi sel di halaman.
- Saat berinteraksi dengan elemen UI seperti slider, dropdown, dan transformer dataframe, sel yang menggunakan nilainya akan otomatis dijalankan ulang dengan nilai terbaru.
- marimo menganalisis kode secara statis dan hanya menjalankan sel yang memang perlu dieksekusi untuk meningkatkan performa.
- marimo menyertakan berbagai fitur kenyamanan seperti GitHub Copilot, pemformatan kode Black, ekspor HTML, pelengkapan kode cepat, dan ekstensi VS Code.
Memulai dengan cepat
- Instalasi: jalankan
pip install marimoatauconda install -c conda-forge marimodi terminal untuk memasang marimo. - Membuat notebook: buat notebook kosong dengan
marimo editordan edit notebook dengan nama tertentu menggunakanmarimo edit your_notebook.py. - Menjalankan app: jalankan
marimo run your_notebook.pyuntuk menjalankan notebook sebagai web app. App ini dapat dideploy ke cloud marimo. - Menjalankan sebagai skrip: jalankan
python your_notebook.pyuntuk menjalankan notebook marimo sebagai skrip. - Konversi otomatis notebook Jupyter: gunakan CLI untuk mengonversi notebook Jupyter menjadi notebook marimo secara otomatis.
- Tutorial: jalankan
marimo tutorial --helpuntuk menampilkan semua tutorial.
Pelajari lebih lanjut
- marimo mudah digunakan bahkan oleh pemula, sekaligus menyediakan beragam fitur untuk pengguna profesional.
- Sebagai contoh, Anda dapat melihat alat visualisasi embedding (video) yang dibuat dengan marimo.
- Anda bisa mendapatkan lebih banyak informasi melalui dokumentasi, folder
examples/, dan galeri.
Inspirasi
- marimo membayangkan ulang notebook Python sebagai program Python yang dapat direproduksi, interaktif, dan mudah dibagikan.
- Dengan keyakinan bahwa alat yang kita gunakan membentuk cara kita berpikir, marimo berharap dapat menghadirkan lingkungan pemrograman yang lebih baik bagi komunitas Python.
- marimo terinspirasi dari banyak tempat dan proyek seperti Pluto.jl, ObservableHQ, dan esai Bret Victor.
- marimo adalah bagian dari gerakan yang lebih besar dalam reactive dataflow programming, di mana ide pemrograman fungsional, deklaratif, dan reaktif dari IPyflow, streamlit, TensorFlow, PyTorch, JAX, React, dan lainnya digunakan untuk meningkatkan berbagai alat.
Opini GN⁺
- marimo adalah notebook Python reaktif yang inovatif dan bertujuan mengatasi keterbatasan alat seperti notebook Jupyter yang sudah ada, memungkinkan eksperimen data dan model, keyakinan terhadap akurasi notebook, serta komersialisasi notebook menjadi pipeline atau web app interaktif.
- Alat ini menekankan konsistensi dan reproduktibilitas kode, serta menyederhanakan interaksi dengan elemen antarmuka pengguna untuk meningkatkan pengalaman pemrograman.
- marimo memudahkan kolaborasi dan berbagi dalam bidang data science, riset, dan pendidikan, serta menyediakan platform yang mendorong interaksi antar pengguna dan berbagi pengetahuan melalui pembangunan komunitas.
1 komentar
Komentar Hacker News
Sebagai pengguna notebook Jupyter dan Observable, saya merasa Observable kurang memiliki reaktivitas antar sel, dan menurut saya masalah itu diselesaikan dengan baik di sini. Saya juga suka karena format file Marimo menggunakan Python, dan lisensi Apache 2 juga menarik. Saya terkesan dengan penemuan fitur GitHub Copilot.
Saat bekerja dengan rekan kolaborator yang menggunakan Jupyter Notebook, pengaturan lingkungan dan status tersembunyi Jupyter menjadi masalah. Proyek ini mencoba menyelesaikan masalah kedua, tetapi mengorbankan fleksibilitas. Jika fokusnya pada reproduksibilitas, ini bisa menjadi kompromi yang dapat diterima.
requirements.txtadalah solusi standar untuk masalah lain, tetapi cukup merepotkan untuk digunakan.requirements.txtmerepotkan dan berharap ada solusi yang lebih baik.Saya senang akhirnya ada yang mengerjakan ini. Ada ekstensi VSCode, tetapi agak disayangkan karena ia membuka tampilan browser penuh alih-alih memakai antarmuka notebook bawaan VSCode. Saya juga berbagi pemikiran tentang manajemen paket dan deployment kode produksi.
Saya punya beberapa pertanyaan tentang platform ini: widget interaktif, serta penjelasan tentang ketergantungan dan interaksinya dengan ekosistem Jupyter.
Saya rasa ekstensi Jupytext masih kurang dihargai. Ia menyelesaikan masalah interaksi git di Jupyter dan masalah praktik pemrograman yang menghambat penulisan file library. Saya berharap pembaruan reaktif di proyek baru ini akan berguna bagi pemula maupun proyek yang kompleks.
Daftar dependensinya pendek, dan selain tornado tidak menarik banyak dependensi tambahan yang berat. Terlihat seperti proyek yang sangat berguna dan keren.
Marimo terasa hebat. Saya penasaran apakah ada pertimbangan untuk menambahkan dukungan mermaid.js di markdown.
Saya penggemar Akshay dan Myles, para pendiri Marimo, dan saya berharap hadirnya pesaing untuk Jupyter akan membawa dampak baik bagi ekosistem alat sains.
Saya pikir Quarto menyelesaikan banyak masalah Jupyter yang disebutkan di thread ini. Bahkan NIH juga merekomendasikan penggunaan Quarto dan menyediakan pelatihan untuknya.
Mendefinisikan variabel yang sama beberapa kali adalah kesalahan. Alasannya jelas. Tetapi jika variabel itu hanya digunakan di sel tempat pertama kali dipakai, seharusnya nama variabel bisa digunakan ulang.