Announcing the pylinac web app

Hey guys,
I’m really excited to show you what I’ve been working on lately. I’ve wanted to get into web development for a while, but the learning curve is rather steep. I finally put my nose to the grindstone and figured out the basics. I figured there was no better direct application than to put the functionality of pylinac into a GUI of some sort, with the web being a more accessible, updatable, and flexible format than a standalone program that you would download. Thus:

Assurance QA is a web app for doing what pylinac does, but you don’t need to program to use it! Just upload your images and the web app takes care of the rest. Below is a screenshot to whet your appetite =)

Now, there is limited functionality with only two analysis options (picket fence and starshot), but more will be added as I build the functionality.

Additionally, the site is in private beta, meaning that not just anyone can sign up, but I can provide signup codes upon request (all I need is your email)–just reply to me here, privately, or mention you’re interested and I’ll send the code to the email you’ve given for this group;

Feedback is welcome, but be warned, there are bugs, which is why things are still in beta mode so bear with me.

Check it out at:

A few details for anyone interested:
-Built on Django (same as QAT+, although orders of magnitude more primitive).
-Hosted by Heroku.
-Media files (i.e. uploads) hosted on Amazon S3.
-Views are not asynchronous, meaning after you submit an analysis it’ll take a few seconds.

Both Heroku and Amazon S3 have “free” tiers, giving limited functionality. For our purposes this means two things:
-total uploads by all users cannot exceed 5GB (this is adequate for the foreseeable future and is scalable, but would cost money).
-The first person to use the app after a period of inactivity will notice a long load time; this is because the app goes to “sleep” and has to “wake up”.

I am interested in your project. Would you be able to give me access?


This all sounds very interesting. We are in the process of implementing QAT+, and pylinac looks like it could really add some additional functionality.

I’d like a code if that’s possible.



Assurance QA now has an open signup, and Trajectory log analysis has been added!

Assurance QA has had several changes:

  • A dashboard is now available that shows the latest two items from each analysis category
  • CBCT analysis is now available
  • A link to demo images is listed next to the file upload widget for all analysis items.

Sign up and take it for a spin!

Hello all,
I know I’ve posted several things about the new app lately, but that should slow down soon. I’ve now implemented VMAT analysis, which means close to all of pylinac’s modules (Starshot, CBCT, VMAT, Picket Fence, Machine Logs) are covered. Thusly, while there are a few things I could and would like to implement (tracking machines, trending analysis, PDF reports), assuranceqa has hit a plateau unless I get feedback to add or change something. I hope you enjoy it!

A few other smaller changes:
-I bought, which simply redirects to the heroku app site. I wanted to make an alias, but SSL certificates are expensive and hard to set up; TL;DR it’s safer on heroku (https).
-When you log in you should go straight to the dashboard
-CBCT now allows for HU and scaling tolerances to be used.
-Item options (Update, Delete, etc) have been replaced with icons (should be easy to determine; e.g. a trash can to delete…)
-Links to upload, go back, and edit settings have been added to applicable locations for convenience.
-While there haven’t been too many people doing analyses, you may not see your objects anymore; I moved some things around in the backend &database for clarity, which may have lost the links to your objects. It shouldn’t happen again, sorry.


since we started using Python in our departement we had a look at the package and the internet platform as well, unfortunately every test except for the picket fence test “something went wrong” (also the demo files). Am I doing something wrong?


Hi Stefan,
I’m sorry that the platform wasn’t working for you. Just to be clear, you’re using only the web app and not pylinac, correct? I tried out the site this morning and the starshot and vmat modules were having some trouble. I made a small fix for the starshot, but currently haven’t figured out what is happening with the VMAT test. However, everything else should be working properly. I’ve noticed that at busy times of the day, the site slows down and can sometimes error out; I can’t really do much about that right now, sorry. Try out the demo files (except vmat) again and see if another attempt later in the day works; let me know if not.

The web app should be seen as experimental, and as a proof-of-concept that pylinac can be run on the web. While I’m happy to have people use it (that’s the point!), I would be cautious at this point about using it as a reliable QA tool. In the future when the app has stabilized then perhaps so. Now, on the other hand, pylinac is fairly stable and can be used standalone or integrated with other tools and work fine.

I hope some of this helps; let me know if you continue to have trouble. If the demo files work but your own files don’t then you can share them with me privately and I’d be happy to take a look. Best of luck,


The VMAT module is back up and running (database migration issue).

Works, looks good :-), except for the DRGS files, i uploaded them


I looked into the issue and seems that the problem was the long file names. The default value was 100 characters; I’ve changed this to 200. I tested your files on my account and it worked fine, so all should be good now! Let me know if you have any issues.


I think it’s something like a scaling issue, because on the DMLC-file the evaluation boxes are on the “slits”, not between them.


Pylinac assumes new-style DRGS images, which are centered about the CAX. For old-style images, you can simply add an x-offset. When you’re uploading or changing the settings of an existing dataset, change the X Offset option at the bottom. For most old-style images this is ~20 pixels.


Hi James,

I like the feature in pylinac’s picket fence module that reports the location of the maximum error, i.e. what picket and what leaf. Is it possible for that information to be displayed in Assurance QA as well?

Thank you,


I’ve been meaning to add a “detail view” to the picket fence module now that I’ve added more analysis information in the last few pylinac versions. I’m currently working on a manuscript to showcase pylinac so that’s been keeping me busy. So, yes, it is possible to show that info. When I get the time I’ll work on it =)

Dear James,

First of all, thank you to publish a web version of Pylinac! It’s easier, and quicker, than wait for a server in the department.

I am an Elekta user (so I can’t use all your modules), and I started with the starshot module. I would like to use it to test both the collimator and the couch, but when I have a look at the results, all are mixed up, is there a way to tag every analyse with a measurement type, to be sure what is the result I’m looking at?

Thank you a lot for your work that you share!


Hello Antoine,

IVIEW does not include some DICOM header on the beam configuration.

With the current version of pylinac, you need to add a few dicom tags.

For example, using pyDICOM :

import dicom
dcm = dicom.read_file( “test.dcm” )

dcm.GantryAngle = 0
dcm.BeamLimitingDeviceAngle = 45
dcm.PatientSupportAngle = 45

dcm.save_as( “test2.dcm”)


Thank you Michel for the details on the DICOM tags!
I will have a look at this.



Just trying the pylinac web app for the first time. Cannot seem to upload Truebeam trajectory log files. Even downloaded you demo log file (1) but cannot upload that either. Help!

Kris Armoogum
Royal Derby Hospital

Sorry I’m late to the party. I’ve been at the hospital this week with my newborn.

I haven’t detected any problems with the uploader and I just now manually verified this on my computer. What browser are you using? If it’s an older IE you might be out of luck. If you can, use chrome or firefox. Let me know if this works for you.