Relationship between control points and snapshots

Hello

I have been working with the log files of a TrueBeam STx equipment. However, several doubts have arisen. I am using the command log.axis_data.mlc.leaf_axes[i].actual to be able to access the positions of leaf i. The file that I am working on corresponds to a treatment that has two half arches.

  • Using the previous code, it shows me the positions in the total number of snapshots that the file has (3980), however, I don’t know if these snapshots correspond to those that were taken during the execution of arc 1 and 2.

  • Also, I’m looking to correlate those snapshots with control points. Therefore, I have the following doubt: if the 3980 snapshots correspond to the 2 arcs, I could say that for each arc there are 1990 snapshots and if I know that each arc has 97 control points, then each control point corresponds to 20.51 snapshots ?

I hope someone can guide me in this regard and also attached the log file with which I work.

292266_GBM_Campo 1_20230801125050.bin (4.16 MB)

Hi,

There is a BeamAxis instance called control_point containing the control points related to all snapshots. Along with the beam_hold instance (the control point remains constant when no beam is delivered),
you should be be able to align each snapshot with its correct control point (and other related attributes as well, e.g. MU, jaws, gantry angle etc.), then you can reconstruct the RP-DCM or dose distribution according to the log files.

The plot shows the control point curve from your log file.

cp.png

Hello!

It is exactly what I am looking to be able to do, however, I cannot access that information. Could you help me by providing me with the code that you used to be able to access that information and thus be able to create the graph.

I would greatly appreciate it.

I have already been able to access the information.

Thank you very much for the advice!!!

Hi to all,

I’m on this topic also trying to figure out the best way to do it. I followed the suggestion to check instance control_point and beam_hold. we can map each control point number to each snapshot. Then if we know exactly the number of control point I create a dictionary with snapshot number as key and the nearest value to the integer control point. How it sounds? By the way I have some deviation on expected values (for example of the gantry angle) If I compared them with the original RTPLAN. . Thank you

Example image attached of gap between expected and rtplan for gantry angle in the first CP.

Dictionary example for the field taken into account

{1: [0], 28: [1], 46: [2], 67: [3], 96: [4], 126: [5], 147: [6], 163: [7], 182: [8], 203: [9], 226: [10], 251: [11], 275: [12], 300: [13], 321: [14], 337: [15], 354: [16], 370: [17], 386: [18], 403: [19], 419: [20], 435: [21], 454: [22], 475: [23], 496: [24], 517: [25], 536: [26], 552: [27], 569: [28], 585: [29], 601: [30], 617: [31], 634: [32], 650: [33], 666: [34], 683: [35], 699: [36], 715: [37], 732: [38], 750: [39], 773: [40], 797: [41], 823: [42], 852: [43], 873: [44], 889: [45], 908: [46], 933: [47], 960: [48], 983: [49], 1004: [50], 1025: [51], 1046: [52], 1071: [53], 1101: [54], 1124: [55], 1142: [56], 1161: [57], 1177: [58], 1194: [59], 1210: [60], 1226: [61], 1243: [62], 1259: [63], 1275: [64], 1291: [65], 1308: [66], 1324: [67], 1340: [68], 1359: [69], 1380: [70], 1399: [71], 1415: [72], 1434: [73], 1455: [74], 1476: [75], 1499: [76], 1524: [77], 1546: [78], 1565: [79], 1587: [80], 1614: [81], 1637: [82], 1657: [83], 1677: [84], 1698: [85], 1721: [86], 1744: [87], 1762: [88], 1779: [89], 1795: [90], 1813: [91], 1830: [92], 1848: [93], 1867: [94], 1885: [95], 1903: [96], 1921: [97], 1937: [98], 1953: [99], 1970: [100], 1986: [101], 2002: [102], 2019: [103], 2035: [104], 2051: [105], 2069: [106], 2089: [107], 2109: [108], 2128: [109], 2151: [110], 2177: [111], 2203: [112], 2225: [113]}

gantry_error.png

Hi,
I’m working with Dynalog files and using Pylinac to extract the MLC positions at each control point. As you know, using BeamAxis instance to extract each control point for snapshots is just applicable for Trajectorylog files not Dynalogs. I got the Dynalog files of the Varian Clinac 600c linear accelerator. Would you please help me about accessing the control points using Dynalog files?

Hi, Your proposal is in fact quite logical and easy to implement. My personal experience is that the nearest-neighbor approximation and the first-order interpolation does not pose that much of difference in terms of the final dose distribution (of course this depends on the dose calculation you’re using. what I did was to convert the log files into a RT plan file, and during this process the loss of information granularity is immense).
The deviation is expected to exist.

we can extract number of control points from RT-Plan and use as an array for resize the snapshots (As I did for my files). I found a relation between the gantry angle in log files and RT-Plans. If you write gantry angles for log and corresponded for plan you can find the relation.