magicka: render projections with pydicom+numpy, drop ImageMagickThe old pipeline shelled out to ImageMagick: one `convert` per slice to
JPG, then `convert dir/*.jpg -maximum/-minimum/-average`. That final step
loaded the entire decoded stack into memory at once, so large series drove
RSS past 5Gi and got OOM-killed.
Replace it with a single streaming pass: pydicom decodes each frame, and a
running max/min/sum accumulator folds them in one at a time. Only t...
Pull request #426: Set executable bit on scripts missing +x (fixes prod "Permission denied")Merge in PT/oneposda from dup-series-fix to master
* commit '0cfc79c8459ebe7fe57ba867c5f279ca67c2ed95':
Set executable bit on scripts missing +x (fixes prod "Permission denied")
Add filtering routes for masking visual reviewAdd GET /visualreview/{id}/values and POST /visualreview/{id}/filter,
modeled on the existing DICOM visual-review filtering in visualreviews.py.
Filters masking IECs by dicom_file_type and masking_status (with '*'
wildcard and NULL support), leaving the existing awaiting_review endpoint
untouched for backward compatibility.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Do not check missing dispositions if skip_dispositions is trueCurrently BackgroundPrivateDispositionsTpDual.pl checks for missing
dispositions and exits if any are found, even if you indicated you want
to skip dispositions (and therefore do not care). This commit fixes
that.
Fix bugs in nifti parserThe parser was loading the full file into memory, which was unnecessary
at this time. Also added extra error handling so in the event of an
unknown parsing error, the error is logged to STDERR and parsing
continues.
Fix masking/reviewfiles endpoint, I broke it earlierIt calls the File.from_raw(), which now expects a path, but
the reviewfiles function had not been updated to return a path.
Make ream reconnect to postgres on dropped connectionPreviously a dropped connection would leave ream stuck (set_file_status
swallowed the error and the next loop iteration would hit the dead
cursor forever). Now we wrap the connection in a Db helper that
reconnects with exponential backoff up to a 5min deadline, then
sys.exit so the supervisor restarts us. set_file_status retries the
insert after reconnect so we don't lose the in-flight file's s...
Pull request #421: Report QUeries for nifti filesMerge in PT/oneposda from niftiReportQueries to master
* commit 'd50799bf46319da4bf382b87e89857f349995200':
Report QUeries for nifti files
Pull request #420: Dciodvfy fixMerge in PT/oneposda from dciodvfy-fix to master
* commit 'b6710b006d99395cc5204a25ff5ec77575487c9c':
Remove fix display with no errors
Update macro to append the fix on to the dciodvfy error
Updated Fix to remove the error text and add IGNORE for blank fixes
Update posda.main.file.insert_file_via_api to be more resilientIt no longer gives up immediately if it cannot insert a file
via the API, instead retrying after an increasing delay, up
to max_attempts (default 5). The delay goes 1s, 2s, 4s, 8s, etc.
Pull request #418: Macro fixMerge in PT/oneposda from macro-fix to master
* commit '4bf85e4ae022977a802f10cf98be6497cbd4e4f3':
Fix line endings
Update dcio macro to insert error into fix column when no fix found
Fix bug in dciodvfy macro