Category: Uncategorized

ทดลองใช้ C# กับงานวิจัย

ปกติผมจะใช้ Mathematica เป็นหลักในการทำงานโดยมากจะเป็นพวกแบบจำลองคณิตศาสตร์ที่ตองการเห็นว่าผลลัพธ์จะเปลี่ยนแปลงไปอย่างไรถ้าตัวแปรที่สนใจบางตัวมีการเปลี่ยนแปลง เพิ่มขึ้นหรือลดลง ซึ่งแน่นอนผมใช้พวกคำสั่ง Manipulate หรือ Dynamic เป็นหลัก แต่มาระยะหลังนี้เริ่มมีการใช้ R ในที่ทำงานกันเยอะ ผมเลยเขียนโมเดลของงานที่ทำใน R ไปพอสมควร แต่มันก็ติดปัญหาว่ามันช้ามากกับหลายโมเดลที่ทำอยู่ถึงแม้จะหันไปใช้ Rcpp แต่ก็รู้สึกว่าเสียเวลาเขียน wrapper functions ห่อพวกมันอีกทีใน R แถมเวลาส่งงานให้ Prof ทั้งหลายก็ติดเรื่อง compiler อีก แถมต้องมาเขียน shiny อีกดูวุ่นวายไปหมด สุดท้ายกลับมาตายรังที่ Mathematica เหมือนเดิม เขียนโมเดลเสร็จ อยากจะส่งให้ชาวบ้านดูก็ใช้เพียงแค่คำสั่ง Deploy ไปบนcloud เท่านั้นจบเลย …แต่มันก็แลกมาด้วยค่าใช้จ่ายพอสมควร ผมเลยหาทางเลือกอื่นๆที่มันประหยัดกับบางงานกับโมเดลที่ไม่ดูซับซ้อนและใช้เวลาทำไม่นาน หันซ้ายหันขวาก็มาจบที่ C# หลังจากดูแล้วก็มี library ที่พอช่วยงานได้อย่าง math.net แถม UI ก็ทำง่ายเพียงลากแปะเท่านั้น เลยทดลองใช้ดู ผลปรากฏว่าเป็นที่น่าพอใจ  ถึงจะดูยุ่งยากในส่วน UI แต่ก็รู้สึกว่าไม่ได้เลวร้ายอะไร ส่งงานก็ง่ายแถมก็ไม่ต้องติดตั้งอะไรให้ดูวุ่นวาย

maemod package

จากที่เคยเขียนไว้เกี่ยวกับ r package อันหนึ่งที่ผมเขียนชื่อ maemod สำหรับช่วยให้คนที่สนใจอยากคำนวณพวก ode ได้ง่ายขึ้น (ดูข้างล่าง) maemod (แม่มด) มีคนสนใจว่าถ้าพวกตัวแปร state ต่างๆนั้นเป็นแบบ array จะทำอย่างไร ผมเลยเขียนตัวอย่างพร้อมกับเพิ่มความสามารถด้านarrayนี้เข้าไป พอใช้ได้ไปคร่าวๆก่อน ดูตัวอย่างข้างล่างนี้ครับ # Example from Berkeley Madonna # for using Array # METHOD RK4 # # STARTTIME = 0 # STOPTIME = 20 # DT = 0.02 # # d/dt (A[1]) = -k[1]*A[1] # d/dt (A[2..n-1]) = k[i-1]*A[i-1]-k[i]*A[i]

Univariate distribution relationships

แปะเอาไว้ จะทำMLก็ต้องรู้เรื่องพวกนี้ไว้บ้างนะ (เตือนตัวเอง) ที่มา http://www.math.wm.edu/~leemis/chart/UDR/UDR.html    

Mathematica กับปัญหา MH370 กับ Fukushima

ยังจำได้อยู่ว่าคืนที่เห็นคนโพสท์กระทู้นี้ที่บอร์ด community ของ wolfram รู้สึกตื่นเต้นมากกับวิธีที่เค้าเอาข้อมูลการไหลของน้ำในมหาสมุทรของNASAมาใช้ในการดูว่าชิ้นส่วนเครื่องบิน MH370 ที่หายไปควรจะลอยไปที่ใดได้บ้าง กับอีกอันก็ดูว่าการแพร่กระจายของอนุภาคกัมตรังสีจากโรงงานไฟฟ้านิวเคลียร์ของญี่ปุ่นมันจะแพร่ไปทางไหนบ้าง เจ๋งดีครับ http://community.wolfram.com/groups/-/m/t/595870

เหตุผลที่ทำไมกินยาartesunateทุก12ชม.ถึงไม่ช่วยเรื่องการรักษามาลาเรีย

เรื่องมันมีอยู่ว่าแบบจำลองเรื่องการดื้อยาartemisininที่เสนอโดย Saralamba et al. (ผมและทีมงาน) ทำนายว่าการเพิ่มขึ้นของระยะเวลาในการกำจัดเชื้อมาลาเรียจากร่างกายคนไข้เป็นผลมาจากการที่ระยะหนึ่งของเชื้อมาลาเรียที่เรียกว่า Rings หรือวงแหวนนั้นมีการตอบสนองกับยาลดลงพร้อมกับเสนอว่าถ้าเปลี่ยนการให้ยาคนไข้ทุก 24 ชม.มาเป็น ทุก12ชม.จะช่วยลดเวลาของการกำจัดเชื้อได้ดีกว่า แต่จากการศึกษาโดย Das et al. ที่ทดลองให้ยาทุก 12 ชม. และเพิ่มขนาดเป็นของยากับคนไข้มาลาเรียพบว่าระยะในการกำจัดเชื้อไม่เปลี่ยนแปลงมากนัก จากผลที่ได้นี้มันแสดงให้เห็นว่าแบบจำลองที่เสนอไปนั้นต้องมีอะไรผิดพลาดแน่นอนและก็เลยทำให้มีการศึกษากันเพิ่มขึ้นพร้อมกับมีการเสนอสมมุติฐานต่างๆเพิ่มขึ้น ในแบบจำลองอันเดิม เราสมมุติว่าหลังจากที่เชื้อโดนยาแล้วจะตายพร้อมกับถูกกำจัดออกจากร่างการเลย อย่างรวดเร็วโดยม้าม และเป็นเพราะด้วยเหตุผลนี้ที่ทำให้มีการเถียงกันเรื่องการใช้ระยะของการกำจัดเชื้อเป็นตัวบอกถึงการดื้อยาartemisinin ว่าอาจไม่เหมาะสม (https://www.ncbi.nlm.nih.gov/pubmed/26239987) เพราะนั่นหมายความว่าถ้าเชื้อมันยังตอบสนองกับยาได้ดีอยู่ล่ะ แต่ม้ามมันกำจัดเชื้อที่ตายแล้วออกจากร่างการได้ช้ามันก็ดูเหมือนว่าเป็นเชื้อที่ดื้อยาถ้ายังใช้ระยะเวลาในการกำจัดเชื้อเป็นตัวบอกถึงการดื้อยา  แต่มันก็มีหลายงานวิจัยที่แสดงให้เห็นว่าม้ามนั้นกำจัดเชื้อมาลาเรียได้เร็วมากในผู้ป่วยที่รักษาด้วยยาartemisinin (https://www.ncbi.nlm.nih.gov/pubmed/28231817,https://www.ncbi.nlm.nih.gov/pubmed/11992295) ผมและทีมงานก็เลยเปลี่ยนวิธีที่เชื้อมาลาเรียจะตอบสนองกับยาในแบบจำลองโดยแทนที่เชื้อจะตายเลยหลังจากที่โดนยาก็เปลี่ยนมาเป็นเจ็บแทนแล้วค่อยๆตาย และก็ให้ว่าถ้าเชื้อเจ็บอยู่ถึงแม้จะโดนยาอีกก็ไม่ได้มีผลเปลี่ยนแปลงอะไรเลย ผลที่ได้จากแบบจำลองก็ดูเหมือนจะสอดคล้องกับทุกผลที่ได้จาก Das et al. นั่นก็คือถึงแม้จะให้ยาทุก 12 ชม.ก็ไม่ได้ลดระยะในการกำจัดเชื้อสักเท่าไหร่ กราฟด้านล่างนี้เป็นตัวอย่างผลที่ได้จากแบบจำลอง สีชมพูแสดงการลดลงของเชื้อในคนไข้ที่กินยาทุก 24 ชม.และสีฟ้าสำหรับคนไข้ที่กินยาทุก12ชม. ซึ่งแสดงให้เห็นว่าไม่ได้แตกต่างกันเท่าไหร่และกราฟนี้ก็แสดงให้เห็นว่าถ้าเราทำการศึกษาแบบที่ Das et al. ทำ โอกาสที่เราจะได้ว่าระยะของการกำจัดเชื้อแบบกินยาทุก24ชม.กับทุก12ชม.จะไม่แตกต่างกันมีสูงถึงเกือบ 60% ในการศึกษานี้ผมใช้ Stan ในการสร้างแบบจำลองและเปรียบเทียบผลที่ได้กับข้อมูลจริงจากคนไข้ครับ

Bret Victor The Future of Programming

We don’t know what programming is. We don’t know what computing is. We don’t even know what a computer is.” And once you truly understand that, and once you truly believe that, then you’re free, and you can think anything.’