คำอธิบาย
การพึ่งพาและการติดตั้ง
คู่มือการเริ่มต้นฉบับย่อ
รางวัล
อ้างถึง PyDMD
อ้างอิง
นักพัฒนาและผู้มีส่วนร่วม
เงินทุน
สังกัด
PyDMD เป็นแพ็คเกจ Python ที่ออกแบบมาสำหรับ Dynamic Mode Decomposition (DMD) ซึ่งเป็นวิธีการที่ขับเคลื่อนด้วยข้อมูลที่ใช้ในการวิเคราะห์และแยกโครงสร้างที่เชื่อมโยงกันของ spatiotemporal จากชุดข้อมูลที่แปรผันตามเวลา โดยมีอินเทอร์เฟซที่ครอบคลุมและใช้งานง่ายสำหรับการวิเคราะห์ DMD ทำให้เป็นเครื่องมืออันมีค่าสำหรับนักวิจัย วิศวกร และนักวิทยาศาสตร์ข้อมูลที่ทำงานในสาขาต่างๆ
ด้วย PyDMD ผู้ใช้สามารถแยกย่อยชุดข้อมูลมิติสูงที่ซับซ้อนให้เป็นชุดของโหมดเชิงพื้นที่และเวลาที่สอดคล้องกันได้อย่างง่ายดาย โดยจับไดนามิกที่ซ่อนอยู่และแยกคุณสมบัติที่สำคัญออกมา แพ็คเกจนี้ใช้ทั้งอัลกอริธึม DMD มาตรฐานและรูปแบบขั้นสูง ทำให้ผู้ใช้สามารถเลือกวิธีการที่เหมาะสมที่สุดสำหรับความต้องการเฉพาะของตนได้ ส่วนขยายเหล่านี้ช่วยให้สามารถจัดการกับข้อมูลที่มีสัญญาณรบกวน ชุดข้อมูลขนาดใหญ่ ตัวแปรควบคุม หรือกำหนดโครงสร้างทางกายภาพได้
PyDMD นำเสนอการบูรณาการอย่างราบรื่นกับระบบนิเวศ Python ทางวิทยาศาสตร์ โดยใช้ประโยชน์จากไลบรารียอดนิยม เช่น NumPy และ SciPy เพื่อการคำนวณตัวเลขและการจัดการข้อมูลที่มีประสิทธิภาพ นอกจากนี้ยังมีเครื่องมือแสดงภาพที่หลากหลาย รวมถึงการสร้างโหมดใหม่ การวิเคราะห์สเปกตรัมพลังงาน และการวางแผนวิวัฒนาการของเวลา ความสามารถเหล่านี้ช่วยให้ผู้ใช้ได้รับข้อมูลเชิงลึกเกี่ยวกับโหมดที่โดดเด่นของระบบ ระบุคุณสมบัติที่สำคัญ และเข้าใจวิวัฒนาการชั่วคราวของไดนามิก
PyDMD ส่งเสริมความสะดวกในการใช้งานและการปรับแต่ง โดยจัดให้มี API ที่มีการจัดทำเอกสารไว้อย่างดี พร้อมด้วยชื่อฟังก์ชันที่ใช้งานง่ายและคำอธิบายพารามิเตอร์ที่ชัดเจน แพ็คเกจนี้ได้รับการดูแลและอัปเดตอย่างต่อเนื่อง เพื่อให้มั่นใจว่าสามารถใช้งานร่วมกับ Python เวอร์ชันล่าสุดได้ และรวมเอาคำติชมของผู้ใช้เพื่อปรับปรุงฟังก์ชันการทำงานและประสิทธิภาพ เรามีบทช่วยสอนมากมายที่แสดงคุณลักษณะของซอฟต์แวร์ ดูส่วนตัว อย่าง ด้านล่างและ บทช่วยสอน เพื่อให้เข้าใจถึงศักยภาพของแพ็คเกจนี้ ดูแผนภาพด้านล่างเพื่อดูข้อมูลสรุปของเครื่องมือและฟังก์ชันการทำงานทั้งหมดที่มี การสนับสนุนที่กำลังดำเนินการอยู่ในปัจจุบันจะแสดงด้วยกล่องแบบกึ่งโปร่งใส
PyDMD พร้อมใช้งานบน PyPI ดังนั้นคุณจึงสามารถติดตั้งเวอร์ชันล่าสุดได้ด้วย:
> pip ติดตั้ง pydmd
หากต้องการติดตั้งเวอร์ชัน Bleeding Edge ให้โคลนพื้นที่เก็บข้อมูลนี้ด้วย:
> โคลนคอมไพล์ https://github.com/PyDMD/PyDMD
จากนั้นติดตั้งแพ็คเกจในโหมดการพัฒนา:
> pip ติดตั้ง -e
คุณสมบัติหลักของ PyDMD ขึ้นอยู่กับ numpy
และ scipy
เพื่อที่จะใช้ฟังก์ชันการลงจุด คุณจะต้องมี matplotlib
ด้วย
หากต้องการดำเนินการ DMD เพียงเริ่มต้นด้วยการเริ่มต้นโมดูล PyDMD ที่ใช้วิธีการ DMD ที่คุณเลือก โมเดลอาจได้รับการติดตั้งโดยการเรียกเมธอด fit()
และส่งผ่านข้อมูลที่จำเป็น ขั้นตอนนี้ดำเนินการอัลกอริทึม DMD หลังจากนั้นผู้ใช้สามารถใช้เครื่องมือการพล็อต PyDMD เพื่อแสดงผลลัพธ์เป็นภาพ
จาก pydmd นำเข้า DMDจาก pydmd.plotter นำเข้า plot_summary# สร้างโมเดล DMD ที่แน่นอนด้วยโหมด spatiotemporal 12 รูปแบบ .dmd.fit(X)# พล็อตบทสรุปของคีย์ spatiotemporal โหมด.plot_summary(dmd)
โมดูล PyDMD สามารถห่อด้วยตัวประมวลผลข้อมูลล่วงหน้าได้หากต้องการ Wrapper เหล่านี้จะประมวลผลข้อมูลล่วงหน้าและประมวลผลข้อมูลหลังการประมวลผลใหม่โดยอัตโนมัติ
จาก pydmd นำเข้า DMDจาก pydmd.preprocessing นำเข้า zero_mean_preprocessing# สร้างและปรับโมเดล DMD ที่แน่นอนด้วย data centering.centered_dmd = zero_mean_preprocessing(DMD(svd_rank=12))centered_dmd.fit(X)
ผู้ใช้อาจสร้างโมเดล DMD ที่มีความซับซ้อนสูงด้วย PyDMD ด้านล่างนี้เป็นตัวอย่างของวิธีที่เราจะสร้างและปรับโมเดล DMD ที่ปรับให้เหมาะสมที่สุดแบบกำหนดเองด้วยการบรรจุถุง ข้อจำกัดค่าลักษณะเฉพาะ และอาร์กิวเมนต์การฉายภาพตัวแปรแบบกำหนดเอง
จาก pydmd import BOPDMD# สร้างโมเดล Bagging, Optimized DMD (BOP-DMD) # สำหรับ Optimized DMD (ไม่มีการบรรจุถุง) ให้ใช้ BOPDMD(svd_rank=12, num_trials=0).bopdmd = BOPDMD(svd_rank=12, # Rank of DMD fit.num_trials=100, # จำนวนการทดลองบรรจุถุงที่จะดำเนินการ.trial_size=0.5, # ใช้ 50% ของจำนวนสแน็ปช็อตทั้งหมดต่อการทดลองใช้ eig_constraints={"imag", "conjugate_pairs"}, # ค่าลักษณะเฉพาะต้องเป็นจินตภาพและผันคู่ pairs.varpro_opts_dict={"tol":0.2, "verbose":True}, # ตั้งค่าการยอมรับการลู่เข้าและใช้การอัปเดตแบบละเอียด)# ติดตั้งโมเดล BOP-DMD# X = (n, m) อาร์เรย์ numpy ของข้อมูลสแน็ปช็อตที่แปรผันตามเวลา # t = (m,) อาร์เรย์ numpy ของเวลาของ data collectionbopdmd.fit(X, t)
โมดูลและฟังก์ชัน PyDMD อาจถูกกำหนดพารามิเตอร์ด้วยอินพุตที่หลากหลายเพื่อเพิ่มการปรับแต่ง ดังนั้นโดยทั่วไปเราแนะนำให้ผู้ใช้ใหม่ดูเอกสารประกอบของเรา รวมถึงบทช่วยสอนเฉพาะโมดูลของเราเพื่อดูตัวอย่างและข้อมูลเพิ่มเติม
นอกจากนี้ ด้านล่างนี้เป็นตัวอย่างการเรียกใช้ฟังก์ชัน plot_summary()
เมื่อกำหนดแบบจำลอง DMD ที่เหมาะกับการไหลที่มีศูนย์กลางเฉลี่ยผ่านข้อมูลทรงกระบอกที่ dmdbook.com/DATA.zip - มีการใช้โมเดล DMD ระดับ 12 ที่แน่นอนเพื่อสร้างตัวเลขนี้ ค่าลักษณะเฉพาะ โหมด และไดนามิกมีรหัสสีเพื่อระบุความสัมพันธ์ ขนาดเครื่องหมายค่าลักษณะเฉพาะยังระบุแอมพลิจูดหรือความสำคัญของโหมดสแปติโอเทมโพราลด้วย
สามารถดูเอกสารประกอบเครื่องมือการลงจุดได้ที่นี่
จาก pydmd.plotter นำเข้า plot_summaryplot_summary(dmd, # <-- โมเดล PyDMD ที่ติดตั้งไว้ สามารถเป็น DMD, BOPDMD, ฯลฯ.figsize=(12, 7),index_modes=(0, 2, 4),snapshots_shape=(449, 199),order="F",mode_cmap="แผ่นดินไหว",dynamics_color="k",flip_continuous_axes=True,max_sval_plot=30, -
เอาต์พุตตัวอย่างของฟังก์ชัน plot_summary
สำหรับผู้ใช้ที่ไม่แน่ใจว่าวิธี DMD ใดดีที่สุดสำหรับพวกเขา เรามีแผนผังลำดับงานต่อไปนี้ ซึ่งสรุปวิธีการเลือกตัวแปร DMD ที่เหมาะสมโดยพิจารณาจากประเภทปัญหาหรือชุดข้อมูลเฉพาะ
ผู้ชนะรางวัลที่หนึ่งใน DSWeb 2019 Contest Tutorials on Dynamical Systems Software (Junior Faculty Category) คุณสามารถอ่านบทช่วยสอนสำหรับผู้ชนะ (รูปแบบ PDF) ได้ในโฟลเดอร์บทช่วยสอน
เมื่ออ้างอิง PyDMD โปรดอ้างอิงทั้งสองข้อมูลอ้างอิงต่อไปนี้:
เดโม่, เทสเซเล, รอซซ่า. PyDMD: การสลายตัวของโหมด Python Dynamic วารสารซอฟต์แวร์โอเพ่นซอร์ส 2561 [DOI] [bibitem]
อิชินากะ, อันดรูซซี, เดโม, เตซเซเล, ลาโป, รอซซา, บรันตัน, คุตซ์ PyDMD: แพ็คเกจ Python สำหรับการแบ่งแยกโหมดไดนามิกที่แข็งแกร่ง พิมพ์ล่วงหน้า arXiv, 2024 [arXiv]
หากต้องการใช้อัลกอริธึม DMD เวอร์ชันต่างๆ เราปฏิบัติตามงานเหล่านี้:
คุทซ์, บรันตัน, บรันตัน, พรอคเตอร์. การสลายตัวของโหมดไดนามิก: การสร้างแบบจำลองที่ขับเคลื่อนด้วยข้อมูลของระบบที่ซับซ้อน สยาม ชื่ออื่นทางคณิตศาสตร์ประยุกต์, 2559. [DOI] [bibitem].
ชมิด. การสลายตัวของข้อมูลเชิงตัวเลขและการทดลองในโหมดไดนามิก วารสารกลศาสตร์ของไหล, 2010. [DOI] [bibitem]
ทู, โรว์ลีย์, ลุคเทนเบิร์ก, บรันตัน, คุทซ์ ว่าด้วยการสลายตัวของโหมดไดนามิก: ทฤษฎีและการประยุกต์ . วารสาร Computational Dynamics, 2014. [DOI] [bibitem]
ชมิด. การสลายตัวของโหมดไดนามิกและตัวแปรต่างๆ การทบทวนกลศาสตร์ของไหลประจำปี 2565 [DOI] [bibitem]
กองหน้า-ถอยหลัง: ดอว์สัน, เฮมาติ, วิลเลียมส์, โรว์ลีย์ การกำหนดคุณลักษณะและการแก้ไขผลกระทบของสัญญาณรบกวนของเซ็นเซอร์ในการสลายตัวของโหมดไดนามิก การทดลองในของไหล, 2559. [DOI] [bibitem].
รวมกำลังสองน้อยที่สุด DMD: Hemati, Rowley, Deem, Cattafesta การลดอคติในการสลายตัวของโหมดไดนามิกสำหรับการวิเคราะห์สเปกตรัม Koopman ที่ประยุกต์ของชุดข้อมูลที่มีเสียงดัง พลศาสตร์ของไหลทางทฤษฎีและการคำนวณ, 2017. [DOI] [bibitem].
DMD รูปแบบปิดที่เหมาะสมที่สุด: Héas, Herzet การสลายตัวของโหมดไดนามิกระดับต่ำ: วิธีแก้ปัญหาที่แน่นอนและเข้าใจง่าย วารสารวิทยาศาสตร์ไม่เชิงเส้น, 2565. [DOI] [bibitem].
พื้นที่ย่อย DMD: Takeishi, Kawahara, Yairi การสลายตัวของโหมดไดนามิกของพื้นที่ย่อยสำหรับการวิเคราะห์ Koopman แบบสุ่ม การทบทวนทางกายภาพ E, 2017. [DOI] [bibitem].
DMD ตามหลักฟิสิกส์: Baddoo, Herrmann, McKeon, Kutz, Brunton การสลายตัวของโหมดไดนามิกตามหลักฟิสิกส์ การดำเนินการของ Royal Society A, 2023. [DOI] [bibitem].
ปรับ DMD ให้เหมาะสม: Askham, Kutz วิธีการฉายภาพแบบแปรผันสำหรับการสลายตัวของโหมดไดนามิกที่ปรับให้เหมาะสม วารสารสยามเรื่องระบบพลวัตประยุกต์, 2561. [DOI] [bibitem].
การบรรจุถุง, DMD ที่ปรับให้เหมาะสม: Sashidhar, Kutz การบรรจุถุง การสลายตัวของโหมดไดนามิกที่ปรับให้เหมาะสมเพื่อการพยากรณ์ที่แข็งแกร่งและเสถียรด้วยการวัดปริมาณความไม่แน่นอนเชิงพื้นที่และเชิงเวลา การดำเนินการของ Royal Society A, 2022. [DOI] [bibitem].
DMD พร้อมการควบคุม: พรอคเตอร์, บรันตัน, คุทซ์ การสลายตัวของโหมดไดนามิกพร้อมการควบคุม วารสารสยามเรื่องระบบไดนามิกประยุกต์, 2559. [DOI] [bibitem].
DMD มัลติความละเอียด: Kutz, Fu, Brunton การสลายตัวของโหมดไดนามิกหลายความละเอียด วารสารสยามเรื่องระบบไดนามิกประยุกต์, 2559. [DOI] [bibitem].
DMD ที่ส่งเสริมความกระจัดกระจาย: Jovanović, Schmid, Nichols การสลายตัวของโหมดไดนามิกที่ส่งเสริมความกระจัดกระจาย ฟิสิกส์ของของไหล, 2014. [DOI] [bibitem].
DMD ที่บีบอัด: Erichson, Brunton, Kutz การสลายตัวของโหมดไดนามิกที่ถูกบีบอัดสำหรับการสร้างแบบจำลองพื้นหลัง วารสารการประมวลผลภาพแบบเรียลไทม์, 2559. [DOI] [bibitem].
DMD แบบสุ่ม: Erichson, Mathelin, Kutz, Brunton การสลายตัวของโหมดไดนามิกแบบสุ่ม วารสารสยามเรื่องระบบพลวัตประยุกต์, 2562. [DOI] [bibitem].
ลำดับที่สูงขึ้น DMD: Le Clainche, Vega การสลายตัวของโหมดไดนามิกลำดับที่สูงขึ้น วารสารระบบไดนามิกประยุกต์, 2017. [DOI] [bibitem].
ฮาวอค: บรันตัน, บรันตัน, พร็อคเตอร์, ไคเซอร์, คุตซ์ ความโกลาหลเป็นระบบเชิงเส้นที่ถูกบังคับเป็นช่วงๆ การสื่อสารทางธรรมชาติ, 2017. [DOI] [bibitem].
พารามิเตอร์ DMD: Andreuzzi, Demo, Rozza ส่วนขยายการสลายตัวของโหมดไดนามิกสำหรับการพยากรณ์ระบบไดนามิกแบบพาราเมตริก วารสารสยามเรื่องระบบไดนามิกประยุกต์, 2566. [DOI] [bibitem].
ขยายเวลาออกไป: วิลเลียมส์, โรว์ลีย์, เคฟเรกิดิส วิธีการที่ใช้เคอร์เนลสำหรับการวิเคราะห์สเปกตรัม koopman ที่ขับเคลื่อนด้วยข้อมูล วารสารพลศาสตร์คอมพิวเตอร์, 2558. [DOI] [bibitem].
แลนโด: แบดดู, แฮร์มันน์, แม็คคีน, บรันตัน การเรียนรู้เคอร์เนลสำหรับการแบ่งแยกโหมดไดนามิกที่แข็งแกร่ง: การเพิ่มประสิทธิภาพการแก้ไขความกำกวมเชิงเส้นและไม่เชิงเส้น การดำเนินการของ Royal Society A, 2022. [DOI] [bibitem].
DMD พร้อมการจัดกึ่งกลาง: Hirsh, Harris, Kutz, Brunton ข้อมูลที่อยู่ตรงกลางช่วยปรับปรุงการสลายตัวของโหมดไดนามิก วารสารสยามเรื่องระบบพลศาสตร์ประยุกต์, 2563. [DOI] [bibitem]
กาวิช, โดโนโฮ. เกณฑ์ฮาร์ดที่เหมาะสมที่สุดสำหรับค่าเอกพจน์คือ 4/sqrt(3) ธุรกรรม IEEE เกี่ยวกับทฤษฎีสารสนเทศ, 2014. [DOI] [bibitem]
มัตสึโมโตะ, อินดิงเงอร์. อัลกอริธึมแบบ On-the-fly สำหรับการแบ่งแยกโหมดไดนามิกโดยใช้การแบ่งแยกค่าเอกพจน์แบบเพิ่มหน่วยและกำลังสองน้อยที่สุดทั้งหมด 2017. [arXiv] [บิบิเทม].
คุณสามารถดูรายชื่อผลงานทางวิทยาศาสตร์โดยใช้ PyDMD ได้ที่นี่
โดยมีผู้พัฒนาหลักได้แก่
เราขอขอบคุณผู้สนับสนุนทุกคนที่สนับสนุน PyDMD อย่างอบอุ่น!
คุณต้องการเข้าร่วมทีมหรือไม่? อ่านแนวทางการมีส่วนร่วมและบทช่วยสอนสำหรับนักพัฒนาก่อนเริ่มเล่น!
ทำด้วยหินที่มีส่วนร่วม
เราใช้ pytest
เพื่อรันการทดสอบหน่วยของเรา ใช้คำสั่งต่อไปนี้เพื่อติดตั้งการขึ้นต่อกันที่จำเป็นในการทดสอบโคลนในเครื่องของ PyDMD (สมมติว่าเส้นทางสัมพัทธ์ของที่เก็บเป็น ./PyDMD/
/ ):
python -m pip ติดตั้ง PyDMD/[ทดสอบ]
คุณสามารถรันชุดทดสอบทั้งหมดได้โดยใช้คำสั่งต่อไปนี้ในไดเร็กทอรีฐานของที่เก็บ:
หลาม -m pytest
ส่วนสำคัญของ PyDMD ได้รับการเขียนขึ้นเป็นผลพลอยได้จากโครงการอื่นๆ ที่ผู้คนได้รับทุนสนับสนุน หรือโดยผู้ที่อยู่ในตำแหน่งที่ได้รับทุนสนับสนุนจากมหาวิทยาลัย อาจมีโครงการดังกล่าวมากมายที่นำไปสู่การพัฒนา PyDMD เรารู้สึกขอบคุณมากสำหรับการสนับสนุนนี้!
นอกเหนือจากนี้ PyDMD ยังได้รับการสนับสนุนจากโปรเจ็กต์เฉพาะบางโปรเจ็กต์ที่อนุญาตให้เราทำงานกับส่วนขยาย เอกสาร การฝึกอบรม และการเผยแพร่ที่อาจเป็นไปไม่ได้ โดยเฉพาะอย่างยิ่ง เรารับทราบแหล่งที่มาของการสนับสนุนต่อไปนี้ด้วยความขอบคุณอย่างยิ่ง:
H2020 ERC CoG 2015 AROMA-CFD โครงการ 681447, PI ศาสตราจารย์ Gianluigi Rozza ที่ SISSA mathLab
โครงการ FSE HEaD การเพิ่มประสิทธิภาพรูปร่างโบว์แบบ Bulbous ผ่านการสร้างแบบจำลองลำดับที่ลดลง, FVG, อิตาลี