3 poin oleh GN⁺ 2025-03-12 | Belum ada komentar. | Bagikan ke WhatsApp
  • Visualisasi data ilmiah makin menjadi bottleneck karena data berukuran besar dan berdimensi tinggi serta kebutuhan analisis real-time; fastplotlib adalah library Python yang berupaya menguranginya lewat plotting berakselerasi GPU
  • Dengan rendering berbasis WGPU, fastplotlib mendukung eksplorasi data skala besar, prototyping cepat, perancangan algoritme, dan pembangunan sistem akuisisi real-time untuk instrumen
  • Mengadopsi API berorientasi array, sehingga setelah plot awal pun atribut grafis seperti warna, colormap, dan data dapat diubah secara dinamis dengan indexing ala NumPy
  • Sistem event berbasis callback memungkinkan pendefinisian interaksi pengguna seperti klik; dalam contohnya, alur dibuat untuk menemukan lingkaran terdekat dari posisi klik lalu mengubah warnanya
  • Rendering diabstraksikan di atas pygfx dan menargetkan Vulkan, Metal, serta DX12 melalui WGPU, sehingga lebih berfokus pada pemanfaatan GPU modern dibanding tool yang berpusat pada OpenGL

Bottleneck visualisasi ilmiah yang dibidik fastplotlib

  • fastplotlib adalah library plotting ilmiah berakselerasi GPU yang memanfaatkan WGPU, dengan tujuan visualisasi yang cepat dan interaktif
  • Alasan visualisasi ilmiah makin sulit umumnya sebagai berikut
    • Data dapat mencapai skala terabyte dan sering kali berdimensi tinggi
    • Sulit menggunakan resource komputasi secara efisien
    • Banyak tool berfokus pada plot statis atau tidak diskalakan dengan baik untuk data berukuran besar
    • Visualisasi tertinggal dibanding laju pembuatan data, sehingga analisis real-time tertunda
  • fastplotlib menekankan penggunaan berikut untuk visualisasi berperforma tinggi dan interaktif
    • Visualisasi berakselerasi GPU
    • Prototyping cepat dan perancangan algoritme
    • Eksplorasi data skala besar dan rendering cepat
    • Pembuatan sistem akuisisi real-time untuk instrumen
  • Untuk sebagian besar use case, GPU terintegrasi modern sudah mencukupi

Eksplorasi interaktif melampaui plot statis

  • Visualisasi ilmiah tradisional selama ini bergantung pada plot statis, tetapi visualisasi dinamis dan interaktif membuat eksplorasi serta analisis data menjadi lebih langsung
  • Sebagai contoh, matriks kovarians dari Olivetti faces dataset divisualisasikan secara interaktif dengan fastplotlib
    • Subplot kiri menampilkan matriks kovarians dari Olivetti faces dataset
    • Setiap entri dalam matriks kovarians menunjukkan bagaimana intensitas dua piksel berubah bersama
    • Subplot kanan adalah gambar hasil rekonstruksi dari baris matriks kovarians yang saat ini dipilih
    • Dengan menggerakkan selector, baris yang sedang dilihat dapat diganti dengan mudah
  • Dibanding melihat matriks kovarians saja secara statis, melihat gambar rekonstruksi tiap baris secara bersamaan membuat perubahan intensitas piksel pada wajah dalam dataset lebih mudah dipahami
  • Contoh ini menunjukkan bahwa bahkan interaksi tingkat kecil pun dapat meningkatkan pemahaman data, tanpa harus menganalisis matriks kovarians itu sendiri secara mendalam
  • fastplotlib menyediakan mekanisme untuk membuat plot interaktif tingkat tinggi, guna memperluas pemanfaatan visualisasi ilmiah

API yang diperlakukan seperti array

  • Ekosistem visualisasi ilmiah Python memiliki banyak tool open source, tetapi beberapa library memiliki API yang kompleks sehingga menjadi hambatan masuk bagi ilmuwan dan pengguna
  • fastplotlib berupaya menyediakan visualisasi interaktif yang cepat melalui API yang intuitif
  • Desain intinya adalah membuat data dalam visualisasi tidak perlu dipikirkan sebagai hal selain array
  • Jika data tetap berada dalam struktur berbentuk array yang familiar, interaksi dengan visualisasi juga menjadi lebih sederhana
  • Dalam contoh, setelah menggambar gelombang sinus, warna setiap titik ketiga diubah menjadi merah dengan indexing gaya NumPy
sine_wave.colors[::3] = "red"
  • Dengan cara ini, berbagai atribut grafis dapat dimanipulasi secara dinamis bahkan setelah plot pertama dibuat
    • Colormap
    • Warna
    • Data
  • API berbentuk array menjadi fondasi agar fastplotlib fleksibel dan intuitif digunakan

Sistem event yang disusun dengan callback

  • fastplotlib dirancang agar sistem event juga dapat ditangani secara sederhana
  • Event antar grafik atau plot dapat didefinisikan sebagai fungsi callback, sehingga visualisasi interaktif dapat dibuat dan diperluas
  • Contoh event klik bekerja dengan alur berikut
    • Membuat data beberapa lingkaran
    • Menambahkan lingkaran-lingkaran ke plot dengan add_line_collection
    • Mendaftarkan handler event "click" pada renderer
    • Mengonversi posisi klik dari koordinat layar ke koordinat world
    • Mencari grafik yang paling dekat dengan posisi klik
    • Mengubah warna lingkaran terdekat menjadi putih
  • Penanganan event dilakukan dengan terlebih dahulu mendefinisikan aksi sebagai fungsi, lalu menambahkan handler ke grafik atau plot terkait
  • Pengguna dapat menyusun interaksi dengan mendefinisikan fungsi, alih-alih mempelajari API khusus library yang rumit dari awal

Memanfaatkan GPU modern dan API grafis

  • GPU praktis sudah menjadi prasyarat dalam pekerjaan ilmiah, dan visualisasi pun tidak terkecuali
  • Untuk membuat visualisasi beresolusi tinggi dengan performa baik, resource komputasi GPU harus dimanfaatkan semaksimal mungkin
  • Contoh fastplotlib mem-plot 3 juta titik sambil melakukan tugas berikut
    • Mem-plot garis
    • Melakukan zoom in dan zoom out
    • Mengubah colormap garis
    • Mengubah warna titik tertentu secara individual
  • Pada library visualisasi ilmiah Python lain, sulit untuk mem-plot titik sebanyak ini sekaligus dan mengontrol warna titik secara granular
  • fastplotlib diabstraksikan di atas engine rendering pygfx
  • pygfx dijalankan oleh WGPU, dan WGPU menargetkan API grafis berikut per platform
    • Linux: Vulkan
    • Mac: Metal
    • Windows: DX12
  • Vulkan, Metal, dan DX12 adalah API grafis baru yang lebih cepat dan efisien daripada OpenGL serta memanfaatkan hardware GPU dengan lebih baik
  • Alasan fastplotlib dibuat di atas pygfx adalah untuk mengabstraksikan detail engine rendering level rendah seperti kamera, renderer, dan scene, serta kode berulang, sehingga pengguna dapat berfokus pada data

Dokumentasi dan konten berikutnya

  • fastplotlib berupaya menangani masalah saat ini dalam visualisasi ilmiah Python dengan menggabungkan API berbentuk array yang mudah digunakan dan hardware grafis modern
  • Dokumentasi dan contoh tersedia di dokumentasi fastplotlib
    • Panduan pengguna
    • Cara memulai
    • Galeri contoh
  • Pertanyaan atau diskusi diterima melalui GitHub Issue atau Discussion
  • Ke depannya, akan ditambahkan tulisan yang membahas contoh penggunaan fastplotlib dan teknologi grafis yang mendasarinya secara lebih mendalam

Belum ada komentar.

Belum ada komentar.