Marimo - Python için açık kaynaklı reaktif not defteri
(github.com/marimo-team)- Veri ve modellerle hızlıca denemeler yapmayı sağlayan bir not defteri
- Hücre bazlı çalışma, otomatik hesaplama ve güncelleme
- Gizli durum olmadan her zaman yeniden çalıştırılabilir
- Python dosyası olarak kaydedildiği için Git dostu
- Not defterleri pipeline'a dönüştürülebilir veya interaktif web uygulamaları olarak dağıtılabilir
Reaktif programlama ortamı
- marimo, not defteri kodu, çıktı ve program durumunun tutarlılığını garanti eder.
- Bir hücre çalıştırıldığında marimo, ilgili değişkene başvuran hücreleri otomatik olarak günceller ve hücreleri elle yeniden çalıştırmaktan kaynaklanan hataları önler.
- Bir hücre silindiğinde marimo, ilgili değişkenleri program belleğinden kaldırarak gizli durumu ortadan kaldırır.
- Not defterleri, değişken başvurularına dayalı deterministik bir sırayla çalışır ve sayfadaki hücre konumuna bağlı değildir.
- Slider, dropdown ve dataframe dönüştürücü gibi UI öğeleriyle etkileşime girildiğinde, bu değerleri kullanan hücreler otomatik olarak en güncel değerlerle yeniden çalıştırılır.
- marimo, kodu statik olarak analiz ederek yalnızca çalıştırılması gereken hücreleri çalıştırır ve performansı artırır.
- marimo; GitHub Copilot, Black kod biçimlendirme, HTML dışa aktarma, hızlı kod tamamlama ve VS Code eklentisi gibi çeşitli kullanım kolaylıkları içerir.
Hızlı başlangıç
- Kurulum: Terminalde
pip install marimoveyaconda install -c conda-forge marimokomutunu çalıştırarak marimo'yu kurun. - Not defteri oluşturma:
marimo editorile boş bir not defteri oluşturun vemarimo edit your_notebook.pyile belirli isimdeki bir not defterini düzenleyin. - Uygulama çalıştırma:
marimo run your_notebook.pykomutunu çalıştırarak not defterini web uygulaması olarak çalıştırın. Bu uygulama marimo cloud'a dağıtılır. - Betik olarak çalıştırma:
python your_notebook.pykomutunu çalıştırarak marimo not defterini bir betik olarak çalıştırın. - Jupyter not defterlerini otomatik dönüştürme: CLI kullanarak Jupyter not defterlerini otomatik olarak marimo not defterlerine dönüştürün.
- Eğitimler:
marimo tutorial --helpkomutunu çalıştırarak tüm eğitimleri listeleyin.
Daha fazlasını keşfedin
- marimo, yeni başlayanların da kolayca başlayabilmesini sağlar ve profesyonel kullanıcılar için çeşitli özellikler sunar.
- Örneğin, marimo ile yapılmış embedding görselleştirme aracını (video) inceleyebilirsiniz.
- Dokümantasyon,
examples/klasörü ve galeri üzerinden daha fazla bilgi edinebilirsiniz.
İlham
- marimo, Python not defterlerini yeniden üretilebilir, etkileşimli ve paylaşılabilir Python programları olarak yeniden tasarlar.
- Kullandığımız araçların düşünme biçimimizi şekillendirdiğine olan inançla, Python topluluğuna daha iyi bir programlama ortamı sunmayı amaçlar.
- Pluto.jl, ObservableHQ, Bret Victor'un makaleleri ve daha birçok yer ile projeden ilham alır.
- marimo; IPyflow, streamlit, TensorFlow, PyTorch, JAX ve React gibi araçları geliştiren işlevsel, bildirime dayalı ve reaktif programlama fikirlerinin yer aldığı daha geniş reaktif dataflow programlama hareketinin bir parçasıdır.
GN⁺ görüşü
- marimo, mevcut Jupyter not defteri benzeri araçların sınırlarını aşmayı amaçlayan yenilikçi bir reaktif Python not defteridir; veri ve model deneylerini, not defterinin doğruluğundan emin olmayı ve not defterlerini pipeline ya da interaktif web uygulamalarına dönüştürmeyi mümkün kılar.
- Bu araç, kod tutarlılığı ve yeniden üretilebilirliğe önem verir; kullanıcı arayüzü öğeleriyle etkileşimi sadeleştirerek programlama deneyimini iyileştirir.
- marimo, veri bilimi, araştırma ve eğitim alanlarında iş birliği ve paylaşımı kolaylaştırır; topluluk oluşturma yoluyla kullanıcılar arasında etkileşimi ve bilgi paylaşımını teşvik eden bir platform sunar.
1 yorum
Hacker News görüşleri
Jupyter ve Observable notebook kullanıcısı olarak Observable'da hücre reaktivitesinin eksikliğini hissediyordum; bence bu sorun çok iyi çözülmüş. Marimo dosya formatının Python olması hoşuma gidiyor, Apache 2 lisansını da beğendim. GitHub Copilot özellik keşfi etkileyici.
Jupyter Notebook kullanan iş arkadaşlarımla çalışırken ortam kurulumu ve Jupyter'nin gizli durumu sorun oluyordu. Bu proje ikinci sorunu çözmeye çalışıyor ama bunun karşılığında esneklikten ödün veriyor. Tekrarlanabilirliğe odaklanıyorsanız bu kabul edilebilir bir ödün olabilir.
requirements.txtdiğer sorun için standart çözüm ama kullanımı zahmetli.requirements.txtkullanımını zahmetli buluyor ve daha iyi bir çözüm umuyor.Nihayet birilerinin bunu yapıyor olmasına sevindim. Bir Vscode eklentisi var ama Vscode'un mevcut notebook arayüzü yerine tam tarayıcı görünümü açması biraz hayal kırıklığı yaratıyor. Paket yönetimi ve production kod dağıtımı hakkındaki düşüncelerimi paylaşmak isterim.
Platform hakkında birkaç sorum var: interaktif widget'lar, Jupyter ekosistemiyle bağımlılık ve etkileşim konusunda açıklama rica ediyorum.
Jupytext eklentisinin hak ettiği değeri görmediğini düşünüyorum. Jupyter'nin git etkileşimi sorunlarını ve kütüphane dosyası yazmayı zorlaştıran programlama pratiği sorunlarını çözüyor. Yeni projenin reaktif güncellemelerinin yeni başlayanlar ya da karmaşık projeler için faydalı olmasını bekliyorum.
Bağımlılık listesi kısa ve tornado dışında çok sayıda ek bağımlılığı beraberinde getirmiyor. Oldukça kullanışlı ve havalı bir proje gibi görünüyor.
Marimo'nun harika olduğunu düşünüyorum. Markdown içinde mermaid.js desteği eklemeyi düşünüyor musunuz, merak ediyorum.
Marimo'nun kurucuları Akshay ve Myles'ın hayranıyım; Jupyter'ye bir rakip çıkmasının bilimsel araç ekosistemi için iyi olacağını düşünüyorum.
Quarto'nun bu başlıkta bahsedilen Jupyter sorunlarının çoğunu çözdüğünü düşünüyorum. NIH de Quarto kullanımını tavsiye ediyor ve eğitim veriyor.
Aynı değişkeni birden fazla kez tanımlamak hatadır. Nedeni açık. Ama değişken yalnızca ilk kez kullanıldığı hücrede kullanılıyorsa, değişken adının yeniden kullanılabilmesi gerekir.