cutright / imrt-qa-data-miner Goto Github PK
View Code? Open in Web Editor NEWScans a directory for IMRT QA results
License: MIT License
Scans a directory for IMRT QA results
License: MIT License
Feature request to ignore previously processed PDFs
As far as I can tell, MapCheck and ArcCheck reports are identical, except for the name at the top of the report (MapCheck or ArcCheck).
Should we merge the two parsers into one, then?
I have a few cases that even though we acquired two ArcCheck measurements, the report of the combined results show "MapCHECK" at the top of the report... We'd need to re-work the way it determines the report type to allow both ArcCheck and MapCheck, in any upper/lower case combination.
When I unselect "Any" then select another gamma criteria to plot, I get an IndexError: list index out of range
on line 302 of trending_arccheck.py..
It looks like by the time it gets to that line, the x and y lists are empty.
Looks like f5f213b deleted the .gitignore
from the repo. Was this on purpose?
dateutil.parser
has a dayfirst
keyword argument that will assume day first for ambiguous dates (e.g, 3/2/2020). We should allow the user to set this to True
, if desired.
We should try to skip bad PDF files to prevent a single bad file stopping the entire analysis:
Traceback (most recent call last):
File "c:\Users\m310767.vscode\extensions\ms-python.python-2019.11.50794\pythonFiles\ptvsd_launcher.py", line 43, in
main(ptvsdArgs)
File "c:\Users\m310767.vscode\extensions\ms-python.python-2019.11.50794\pythonFiles\lib\python\old_ptvsd\ptvsd_main_.py", line 432, in main
run()
File "c:\Users\m310767.vscode\extensions\ms-python.python-2019.11.50794\pythonFiles\lib\python\old_ptvsd\ptvsd_main_.py", line 342, in run_module
run_module_as_main(target, alter_argv=True)
File "c:\Users\m310767\AppData\Local\Continuum\anaconda3\envs\py3\lib\runpy.py", line 193, in _run_module_as_main
"main", mod_spec)
File "c:\Users\m310767\AppData\Local\Continuum\anaconda3\envs\py3\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\m310767\dev\IMRT-QA-Data-Miner\IQDM\main.py", line 150, in
main()
File "C:\Users\m310767\dev\IMRT-QA-Data-Miner\IQDM\main.py", line 140, in main
no_recursive_search=args.no_recursive_search)
File "C:\Users\m310767\dev\IMRT-QA-Data-Miner\IQDM\main.py", line 63, in process_files
process_file(file_path, output_file, output_dir)
File "C:\Users\m310767\dev\IMRT-QA-Data-Miner\IQDM\main.py", line 68, in process_file
row, report_type, columns = pdf_to_qa_result(file_path) # process file
File "C:\Users\m310767\dev\IMRT-QA-Data-Miner\IQDM\main.py", line 30, in pdf_to_qa_result
text = convert_pdf_to_txt(abs_file_path)
File "C:\Users\m310767\dev\IMRT-QA-Data-Miner\IQDM\pdf_to_text.py", line 31, in convert_pdf_to_txt
check_extractable=True):
File "c:\Users\m310767\AppData\Local\Continuum\anaconda3\envs\py3\lib\site-packages\pdfminer\pdfpage.py", line 129, in get_pages
doc = PDFDocument(parser, password=password, caching=caching)
File "c:\Users\m310767\AppData\Local\Continuum\anaconda3\envs\py3\lib\site-packages\pdfminer\pdfdocument.py", line 585, in init
raise PDFSyntaxError('No /Root object! - Is this really a PDF?')
pdfminer.pdfparser.PDFSyntaxError: No /Root object! - Is this really a PDF?
In this case, the offending file is a broken PDF of 0 size.
The following two lines (here and here) raise a ValueError
when the conversion to float fails.
What do you think of the following fix?
if 'Any' in active_gamma or gamma_crit in active_gamma:
try:
y_float = float(self.data[select_y.value][i])
except ValueError:
continue
new_data['x'].append(self.x[i])
new_data['y'].append(y_float)
new_data['id'].append(self.data['Patient ID'][i])
I finally tried out the ArcCheck module and got:
ValueError: {'Minimum': 'n/a', 'Maximum': 'n/a', 'Average': 'n/a', 'Stdv': 'n/a'} is not in list
Will post a suggested change momentarily.
https://github.com/cutright/IMRT-QA-Data-Miner/blob/master/trending_arccheck.py#L111
SNC Patient software actually allows two date formats for the PDF reports:
<month>/<day>/<year>
<day>/<month>/<year>
The easiest way to deal with this would be to enforce one format, but the nice thing would be to offer an option to the user.
Also, there are some sanity checks that could be done.
The windowing system has been overhauled in Pinnacle 16 (my version is 16.2.1) and running the Pinnacle POI script returns an error for line 23 saying it's unable to create window "TempStoreEditor".
This error prevents you from typing in the name of the treatment site, so the POI just gets the name "tx: ".
Any idea? I've never had to deal with Pinnacle scripts before. Someone suggested that WindowList should be XtWindowList in Pinnacle 16, but that didn't work.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.