Keterangan
Ketergantungan dan instalasi
Panduan memulai cepat
Penghargaan
Mengutip PyDMD
Referensi
Pengembang dan kontributor
Pendanaan
Afiliasi
PyDMD adalah paket Python yang dirancang untuk Dekomposisi Mode Dinamis (DMD) , metode berbasis data yang digunakan untuk menganalisis dan mengekstraksi struktur koheren spatiotemporal dari kumpulan data yang bervariasi waktu. Ini menyediakan antarmuka yang komprehensif dan ramah pengguna untuk melakukan analisis DMD, menjadikannya alat yang berharga bagi para peneliti, insinyur, dan ilmuwan data yang bekerja di berbagai bidang.
Dengan PyDMD, pengguna dapat dengan mudah menguraikan kumpulan data yang kompleks dan berdimensi tinggi ke dalam serangkaian mode spasial dan temporal yang koheren, menangkap dinamika yang mendasarinya dan mengekstraksi fitur-fitur penting. Paket ini mengimplementasikan algoritma DMD standar dan variasi lanjutan, memungkinkan pengguna memilih metode yang paling sesuai untuk kebutuhan spesifik mereka. Ekstensi ini memungkinkan penanganan data yang berisik, kumpulan data besar, variabel kontrol, atau penerapan struktur fisik.
PyDMD menawarkan integrasi yang mulus dengan ekosistem ilmiah Python, memanfaatkan perpustakaan populer seperti NumPy dan SciPy untuk komputasi numerik dan manipulasi data yang efisien. Ia juga menawarkan berbagai alat visualisasi, termasuk rekonstruksi mode, analisis spektrum energi, dan plot evolusi waktu. Kemampuan ini memungkinkan pengguna untuk mendapatkan wawasan tentang mode dominan sistem, mengidentifikasi fitur-fitur penting, dan memahami evolusi temporal dari dinamika.
PyDMD mempromosikan kemudahan penggunaan dan penyesuaian, menyediakan API yang terdokumentasi dengan baik dengan nama fungsi yang intuitif dan deskripsi parameter yang jelas. Paket ini dipelihara dan diperbarui secara aktif, memastikan kompatibilitas dengan versi Python terbaru dan menggabungkan umpan balik pengguna untuk meningkatkan fungsionalitas dan kinerja. Kami menyediakan banyak tutorial yang menunjukkan karakteristik perangkat lunak. Lihat bagian Contoh di bawah dan Tutorial untuk mendapatkan gambaran tentang potensi paket ini. Lihat juga diagram di bawah untuk ringkasan semua alat dan fungsi yang tersedia. Kontribusi yang sedang dalam proses diwakili oleh kotak semi-transparan.
PyDMD tersedia di PyPI, oleh karena itu Anda dapat menginstal versi rilis terbaru dengan:
> pip instal pydmd
Untuk menginstal versi terbaru, kloning repositori ini dengan:
> git klon https://github.com/PyDMD/PyDMD
dan kemudian instal paket dalam mode pengembangan:
> pip instal -e .
Fitur inti PyDMD bergantung pada numpy
dan scipy
. Untuk menggunakan fungsi plotting, Anda juga memerlukan matplotlib
.
Untuk melakukan DMD, cukup mulai dengan menginisialisasi modul PyDMD yang mengimplementasikan metode DMD pilihan Anda. Model kemudian dapat dipasang dengan memanggil metode fit()
dan meneruskan data yang diperlukan. Langkah ini menjalankan algoritma DMD, setelah itu pengguna dapat menggunakan alat plot PyDMD untuk memvisualisasikan hasilnya.
from pydmd import DMDfrom pydmd.plotter import plot_summary# Buat model DMD yang tepat dengan 12 mode spatiotemporal.dmd = DMD(svd_rank=12)# Sesuaikan model DMD.# X = (n, m) array numpy dari data snapshot yang bervariasi waktu .dmd.fit(X)# Plot ringkasan spatiotemporal kunci mode.plot_summary(dmd)
Modul PyDMD juga dapat dibungkus dengan praprosesor data jika diinginkan. Pembungkus ini akan melakukan praproses data dan pascaproses rekonstruksi data secara otomatis.
from pydmd import DMDfrom pydmd.preprocessing import zero_mean_preprocessing# Buat dan sesuaikan model DMD yang tepat dengan data centering.centered_dmd = zero_mean_preprocessing(DMD(svd_rank=12))centered_dmd.fit(X)
Pengguna juga dapat membuat model DMD yang sangat kompleks dengan PyDMD. Di bawah ini adalah contoh bagaimana seseorang dapat membuat dan menyesuaikan model DMD yang Dioptimalkan yang disesuaikan dengan bagging, batasan nilai eigen, dan argumen proyeksi variabel khusus.
from pydmd import BOPDMD# Buat model Bagging, Optimized DMD (BOP-DMD).# Untuk Optimized DMD (tanpa bagging), gunakan BOPDMD(svd_rank=12, num_trials=0).bopdmd = BOPDMD(svd_rank=12, # Rank of DMD fit.num_trials=100, # Jumlah uji coba mengantongi perform.trial_size=0.5, # Gunakan 50% dari total jumlah snapshot per trial.eig_constraints={"imag", "conjugate_pairs"}, # Nilai eigen harus berupa pasangan imajiner dan konjugasi.varpro_opts_dict={"tol":0.2, " verbose":True}, # Tetapkan toleransi konvergensi dan gunakan pembaruan verbose.)# Sesuaikan model BOP-DMD.# X = (n, m) array numpy dari data snapshot yang bervariasi waktu# t = (m,) array numpy dari waktu pengumpulan databopdmd.fit(X, t)
Modul dan fungsi PyDMD dapat diparameterisasi dengan berbagai masukan untuk penyesuaian tambahan, jadi kami biasanya menyarankan agar pengguna baru merujuk ke dokumentasi kami, serta tutorial khusus modul kami untuk contoh dan informasi lebih lanjut.
Di bawah ini juga disediakan contoh pemanggilan fungsi plot_summary()
ketika diberi model DMD yang dipasang pada aliran yang berpusat pada rata-rata melewati data silinder yang tersedia di dmdbook.com/DATA.zip . Model DMD persis peringkat ke-12 digunakan untuk menghasilkan angka ini. Nilai eigen, mode, dan dinamika diberi kode warna untuk menunjukkan asosiasi. Ukuran penanda nilai eigen juga menunjukkan amplitudo atau kepentingan mode spatiotemporal.
Dokumentasi alat plotting dapat ditemukan di sini.
dari pydmd.plotter import plot_summaryplot_summary(dmd, # <-- Model PyDMD yang dipasang. Dapat berupa DMD, BOPDMD, dll.figsize=(12, 7),index_modes=(0, 2, 4),snapshots_shape=(449, 199),order="F",mode_cmap="seismik",dynamics_color="k",flip_continuous_axes=Benar,max_sval_plot=30, )
Contoh keluaran fungsi plot_summary.
Bagi pengguna yang tidak yakin metode DMD mana yang terbaik bagi mereka, kami menyediakan diagram alur berikut, yang menguraikan cara memilih varian DMD yang sesuai berdasarkan jenis masalah atau kumpulan data tertentu.
Pemenang pertama dalam Kontes Tutorial DSWeb 2019 Perangkat Lunak Sistem Dinamis (Kategori Junior Fakultas). Anda dapat membaca tutorial pemenang (format PDF) di folder tutorial.
Saat mengutip PyDMD, harap kutip kedua referensi berikut:
Demo, Tezzele, Rozza. PyDMD: Dekomposisi Mode Dinamis Python . Jurnal Perangkat Lunak Open Source, 2018. [DOI][bibitem]
Ichinaga, Andreuzzi, Demo, Tezzele, Lapo, Rozza, Brunton, Kutz. PyDMD: Paket Python untuk dekomposisi mode dinamis yang kuat . pracetak arXiv, 2024. [arXiv]
Untuk mengimplementasikan berbagai versi algoritma DMD kami mengikuti karya berikut:
Kutz, Brunton, Brunton, Proctor. Dekomposisi Mode Dinamis: Pemodelan Sistem Kompleks Berbasis Data . Judul Lain SIAM Matematika Terapan, 2016. [DOI] [bibitem].
Schmid. Dekomposisi mode dinamis data numerik dan eksperimen . Jurnal Mekanika Fluida, 2010. [DOI][bibitem]
Tu, Rowley, Luchtenburg, Brunton, Kutz. Tentang Dekomposisi Mode Dinamis: Teori dan Aplikasi . Jurnal Dinamika Komputasi, 2014. [DOI][bibitem]
Schmid. Dekomposisi mode dinamis dan variannya . Review Tahunan Mekanika Fluida, 2022. [DOI][bibitem]
DMD maju-mundur: Dawson, Hemati, Williams, Rowley. Mengkarakterisasi dan mengoreksi efek noise sensor dalam dekomposisi mode dinamis . Eksperimen dalam Cairan, 2016. [DOI] [bibitem].
Total DMD kuadrat terkecil: Hemati, Rowley, Deem, Cattafesta. Menghilangkan bias dekomposisi mode dinamis untuk menerapkan analisis spektral Koopman pada kumpulan data yang berisik . Dinamika Fluida Teoritis dan Komputasi, 2017. [DOI] [bibitem].
DMD bentuk tertutup yang optimal: Héas, Herzet. Dekomposisi mode dinamis peringkat rendah: Solusi yang tepat dan dapat dilakukan . Jurnal Sains Nonlinier, 2022. [DOI] [bibitem].
DMD Subruang: Takeishi, Kawahara, Yairi. Dekomposisi mode dinamis subruang untuk analisis stokastik Koopman . Review Fisik E, 2017. [DOI] [bibitem].
DMD yang mengetahui fisika: Baddoo, Herrmann, McKeon, Kutz, Brunton. Dekomposisi mode dinamis berdasarkan fisika . Prosiding Royal Society A, 2023. [DOI] [bibitem].
DMD yang Dioptimalkan: Askham, Kutz. Metode proyeksi variabel untuk dekomposisi mode dinamis yang dioptimalkan . Jurnal SIAM Sistem Dinamis Terapan, 2018. [DOI] [bibitem].
Mengantongi, DMD yang dioptimalkan: Sashidhar, Kutz. Mengantongi, dekomposisi mode dinamis yang dioptimalkan untuk perkiraan yang kuat dan stabil dengan kuantifikasi ketidakpastian spasial dan temporal . Prosiding Royal Society A, 2022. [DOI] [bibitem].
DMD dengan Kontrol: Proctor, Brunton, Kutz. Dekomposisi mode dinamis dengan kontrol . Jurnal SIAM Sistem Dinamis Terapan, 2016. [DOI] [bibitem].
DMD Multiresolusi: Kutz, Fu, Brunton. Dekomposisi mode dinamis multiresolusi . Jurnal SIAM Sistem Dinamis Terapan, 2016. [DOI] [bibitem].
DMD yang mendorong ketersebaran: Jovanović, Schmid, Nichols Dekomposisi mode dinamis yang mendorong ketersebaran . Fisika Fluida, 2014. [DOI] [bibitem].
DMD terkompresi: Erichson, Brunton, Kutz. Dekomposisi mode dinamis terkompresi untuk pemodelan latar belakang . Jurnal Pengolahan Citra Real-Time, 2016. [DOI] [bibitem].
DMD Acak: Erichson, Mathelin, Kutz, Brunton. Dekomposisi mode dinamis acak . Jurnal SIAM Sistem Dinamis Terapan, 2019. [DOI] [bibitem].
DMD Tingkat Tinggi: Le Clainche, Vega. Dekomposisi mode dinamis tingkat tinggi . Jurnal Sistem Dinamis Terapan, 2017. [DOI] [bibitem].
HAVOK: Brunton, Brunton, Proctor, Kaiser, Kutz. Kekacauan sebagai sistem linier yang dipaksakan secara intermiten . Komunikasi Alam, 2017. [DOI] [bibitem].
DMD Parametrik: Andreuzzi, Demo, Rozza. Ekstensi dekomposisi mode dinamis untuk peramalan sistem dinamis parametrik . Jurnal SIAM Sistem Dinamis Terapan, 2023. [DOI] [bibitem].
DMD yang Diperpanjang: Williams, Rowley, Kevrekidis. Metode berbasis kernel untuk analisis spektral koopman berbasis data . Jurnal Dinamika Komputasi, 2015. [DOI] [bibitem].
LANDO: Baddoo, Herrmann, McKeon, Brunton. Pembelajaran kernel untuk dekomposisi mode dinamis yang kuat: optimasi disambiguasi linier dan nonlinier . Prosiding Royal Society A, 2022. [DOI] [bibitem].
DMD dengan Pemusatan: Hirsh, Harris, Kutz, Brunton. Pemusatan data meningkatkan dekomposisi mode dinamis . Jurnal SIAM Sistem Dinamis Terapan, 2020. [DOI] [bibitem]
Gavish, Donoho. Ambang batas keras optimal untuk nilai tunggal adalah 4/sqrt(3) . Transaksi IEEE pada Teori Informasi, 2014. [DOI] [bibitem].
Matsumoto, Indinger. Algoritma on-the-fly untuk dekomposisi mode dinamis menggunakan dekomposisi nilai singular tambahan dan total kuadrat terkecil . 2017. [arXiv] [bibitem].
Anda dapat menemukan daftar karya ilmiah menggunakan PyDMD di sini.
Pengembang utamanya adalah
Kami sangat berterima kasih kepada semua kontributor yang telah mendukung PyDMD!
Apakah Anda ingin bergabung dengan tim? Baca panduan Berkontribusi dan Tutorial untuk Pengembang sebelum mulai bermain!
Dibuat dengan kontrib.rocks.
Kami menggunakan pytest
untuk menjalankan pengujian unit kami. Gunakan perintah berikut untuk menginstal dependensi yang diperlukan untuk menguji klon lokal PyDMD (dengan asumsi jalur relatif repositori adalah ./PyDMD/
):
python -m pip install PyDMD/[tes]
Anda dapat menjalankan seluruh rangkaian pengujian dengan menggunakan perintah berikut di direktori dasar repositori:
python -m pytest
Sebagian besar PyDMD telah ditulis sebagai produk sampingan dari proyek lain yang didanai oleh orang-orang, atau oleh orang-orang yang menduduki posisi yang didanai universitas. Mungkin ada banyak proyek serupa yang mengarah pada pengembangan PyDMD. Kami sangat berterima kasih atas dukungan ini!
Selain itu, PyDMD juga didukung oleh beberapa proyek khusus yang memungkinkan kami mengerjakan perluasan, dokumentasi, pelatihan, dan sosialisasi yang sebelumnya tidak mungkin dilakukan. Secara khusus, kami mengucapkan terima kasih yang sebesar-besarnya kepada sumber dukungan berikut:
Proyek AROMA-CFD H2020 ERC CoG 2015 681447, PI Profesor Gianluigi Rozza di SISSA mathLab.
Proyek FSE HEaD Optimasi Bentuk Busur Bulat melalui Reduced Order Modelling, FVG, Italia.