ตัวอย่างใช้งาน notebook ของ Mathematica


ผมเขียน code เพื่อสร้างกราฟเพื่อดูว่าผลลัพธ์จากโมเดลที่ผมสร้างขึ้นมานั้นมันเหมือนหรือต่างข้อมูลจริงจากคนไข้อย่างไร โดยเขียนให้มันสร้าง notebook ขึ้นมาพร้อมกับรัน code สำหรับสร้างกราฟเลย โดยที่ในแต่ล่ะ notebook จะมีข้อมูลของคนไข้ประมาณ 300 คน ตามตัวอย่างนี้ครับ

ทีนี่ผมอยากจะ save กราฟที่สร้างขึ้นในแต่ล่ะ cell เป็น pdf จากไฟล์ notebook แต่ล่ะไฟล์ ซึ่งในแต่ล่ะ notebook จะมีประมาณ 5-10 cells ได้ ถ้าไปมัวเลือก save ในแต่ล่ะ cells คงต้องเสียเวลามาก เพราะมันมีหลายไฟล์ และผมก็มีหลายโมเดล

วิธีที่ผมทำก็คือเขียน code มาเปิด notebook แต่ล่ะไฟล์แล้วก็ให้มันเลือกเซฟเฉพาะ กราฟของแต่ล่ะ cell ที่ต้องการโดย code ที่เขียนก็จะประมาณนี้ครับ

ExportPdf[nbfilename_, outnames_List] := Module[{nb, nbr, i},
   nb = NotebookOpen[NotebookDirectory[] <> nbfilename];
   SelectionMove[nb, Before, Notebook];
   For[i = 1, i <= Length@outnames, i++,
    SelectionMove[nb, Next, CellContents, 2];
    nbr = NotebookRead[nb];
    If[nbr =!= {},
     Export[outnames[[i]] <> ".pdf", nbr];
     Print[outnames[[i]] <> ".pdf has been created."];
     ];
    ];
   NotebookClose[nb];
   ];

โดยคำสั่งหลักที่ใช้ก็คือ NotebookOpen, SelectionMove และ NotebookRead ครับ

NotebookOpen ก็เปิดไฟล์ notebook แล้วสร้างเป็น object จากนั้นก็เคลื่อนที่ภายใน Notebook ผ่านคำสั่ง SelectionMove พร้อมกับอ่านค่าตรงตำแหน่งที่เคลื่อนที่ไปด้วยคำสั่ง NotebookRead แล้วก็เขียนค่าที่ได้ออกมาเป็นไฟล์ใน format ที่ต้องการ

ลองดูเพิ่มเติมการใช้งาน notebook ของ Mathematica ได้ที่ https://reference.wolfram.com/language/tutorial/ManipulatingNotebooksOverview.html