/RT-Guide

Guide สำหรับการเขียนโปรแกรมเกี่ยวกับ Radiotherapy

MIT LicenseMIT

RT programming guide

Tutorial นี้ทำขึ้นเพื่อแนะนำการเขียนโปรแกรมสำหรับ radiotherapy เบื้องต้น สำหรับระบบ treatment planning (TPS) ของ Varian

TPS ของ varian นั้นจะมี API ที่ชื่อ ESAPI ที่เป็นชุดคำสั่งสำหรับเขียนโปรแกรมติดต่อกับระบบ TPS โดยรองรับภาษา C# และ Python ตัวอย่างโค้ดและ documents สามารถดูได้ที่ link

Index


เริ่มต้นเขียนโปรแกรม

พื้นฐานการเขียนโปรแกรมที่ควรมีในแต่ละภาษาส่วนมากจะคล้ายกัน ต่างกันแค่ syntax (โครงสร้างภาษา) เรื่องที่ควรรู้คือ

  • Variables และชนิดของ variables
  • Array or Lists
  • Operator
  • Conditional statement (if/else)
  • Loop (For loop/while loop)
  • Functions
  • การใช้ library/modules
  • Classes/Objects (เรื่องนี้อาจจะข้ามไปก่อนได้ แต่ถ้ารู้จะเข้าใจการเขียนโปรแกรมได้ไวขึ้น แนะนำว่าถ้าข้ามไปแล้วพอเขียนโปรแกรมไปสักพักให้กลับมาอ่านใหม่)

การเรียนเขียนโปรแกรมจะไปได้ไวขึ้นถ้าเราฝึกเขียนไปด้วย resources หลักๆจะมีหนังสือ วิดีโอ และ interactive website ซึ่งผมแนะนำ interactive website เนื่องจากไม่ต้อง set โปรแกรมในเครื่องตัวเองเหมาะสำหรับคนเรียนครั้งแรก หรือแล้วแต่ถนัด

Python

ภาษาไทย

  • Kong Ruksiam Youtube สอนตั้งแต่การติดตั้ง Python จนถึง Functions
  • marcuscode บทความสอน Python ภาษาไทย

ภาษาอังกฤษ

  • w3schools เป็น interactive website
  • Sololearn มีทั้ง ios และ android app แบบ interactive
  • FreeCodeCamp youtube
  • Reddit learning resources รวม tutorials สำหรับ python lists นี้บางแหล่งอาจจะเกินพื้นฐานไปบ้าง

C#

ภาษาไทย

  • Kong Ruksiam Youtube สอนพื้นฐานครบ อาจจะขาดเรื่องการติดตั้งโปรแกรม
  • CBSknowledgeNET Youtube สอนตั้งแต่ติดตั้งโปรแกรม

ภาษาอังกฤษ

Library ที่ควรรู้จัก

Python

  • Numpy ใช้สำหรับการคำนวณทางคณิตศาสตร์
  • Matplotlib ใช้สำหรับการ visualize data
  • SimpleITK ใช้สำหรับ image analysis

C#

  • TODO

การติดต่อกับ TPS และนำข้อมูลออกจากระบบ

การเขียนโปรแกรมติดต่อกับ Varian TPS โดยรวมแล้วแนะนำให้อ่านใน Varian API Book โดยจะสอน ESAPI ทั้งภาษา C# และ Python

ในเรื่องที่ไม่มีใน Varian API Book เช่น

  • การ export image (RTDose, CT, ROIs) สามารถดูได้ที่ C# Python
  • ตัวอย่างโค้ดอื่นๆ และโค้ดจากงานสัมนาของ Varian สามารถดูได้ที่ link

File IO and image processing

part นี้จะพูดถึงการอ่านไฟล์ที่เรา export ออกมาจาก TPS และ image processing เบื้องต้น (จริงๆแล้วใน Varian API Book และ example code จาก Github ของ Varian Developer ที่แนะนำใน Part ก่อน ก็มีตัวอย่างโค้ด image processing อยู่บ้างแล้ว)

Tools เบื้องต้นสำหรับอ่านไฟล์คือ

  • pydicom (python) สำหรับอ่านไฟล์ DICOM
  • SimpleITK (python) สำหรับอ่านไฟล์ image อื่นๆ และ image processing tutorial
  • 3D slicer ไฟล์ที่เรานำออกมาบางชนิดที่ไม่สามารถเปิดด้วย Library ด้านบนได้ สามารถเปิดในโปรแกรม 3D slicer เพื่อแปลงไฟล์ให้เป็นแบบที่เราต้องการ

Tools สำหรับ image processing

  • SimpleITK (python) สำหรับอ่านไฟล์ image อื่นๆ และ image processing tutorial
  • Numpy ใช้สำหรับการคำนวณทางคณิตศาสตร์
  • Matplotlib ใช้สำหรับการ visualize data

อื่นๆ

section นี้จะแนะนำ resource อื่นๆที่อาจจะจำเป็นสำหรับการเขียนโปรแกรมหรือทำวิจัยทางด้าน radiotherapy

  • 3D slicer เป็น Software สำหรับ medical image analysis ภาษาที่ใช้จะเป็น Python
  • pymedphys เป็น Python library สำหรับ medical physics
  • matRad เป็น Software สำหรับ intensity-modulated photon, proton, and carbon ion therapy ภาษาที่ใช้จะเป็น MATLAB
  • Github คือเว็บไซด์ที่ใช้ Git ไว้สำหรับการจัดเก็บ code โดยสามารถหา public resources (code, tutorial) ที่คนอื่นได้เปิดไว้ให้เราได้อ่านหรือนำไปใช้ได้ฟรีๆอีกด้วยในบางโปรเจค
  • Pyradiomics Python library สำหรับการคำนวณ Radiomics