rsna-anonymizer 19.1.0.dev4__tar.gz → 19.1.0.dev6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/CHANGELOG.md +13 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/PKG-INFO +5 -5
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/pyproject.toml +1 -1
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/readme.de.md +4 -4
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/readme.es.md +4 -4
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/readme.fr.md +4 -4
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/readme.md +4 -4
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/batch_process.py +128 -37
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/metadata/detect.py +53 -28
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/ner/entity.py +3 -2
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/pixel/ocr_pipeline.py +82 -25
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/pixel/remove_pixel_phi.py +26 -5
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/pixel/whitelist_io.py +4 -1
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/term_similarity.py +10 -4
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/__init__.py +6 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/pipeline.py +125 -18
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/phi/phi_io.py +22 -2
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/series/create_projections.py +9 -5
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/series/series_io.py +3 -2
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/model/anonymizer.py +119 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/utils/dicom.py +19 -3
- rsna_anonymizer-19.1.0.dev6/src/anonymizer/utils/windowing.py +209 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/ai/ai_batch_process_options_dialog.py +152 -30
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/common/app_window.py +23 -1
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/common/tk_mouse.py +4 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/project/dataset.py +61 -6
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/reports/report_text_review.py +8 -2
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/series/histogram.py +40 -8
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/series/image.py +46 -20
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/series/metadata_assessment_dialog.py +41 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/series/projection.py +307 -9
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/series/series.py +5 -7
- rsna_anonymizer-19.1.0.dev4/src/anonymizer/utils/windowing.py +0 -90
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/.gitignore +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/LICENSE +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/anonymizer.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/analytics/organ_volume_ranges_ml.json +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/dicom_standard/2025e/json/dict_info.json +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/dicom_standard/2025e/json/iod_info.json +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/dicom_standard/2025e/json/module_info.json +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/dicom_standard/2025e/json/uid_info.json +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/dicom_standard/2025e/json/version +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/dicom_standard/SOURCE.md +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/fonts/DINAlternate-Bold.ttf +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/icons/create_icns.sh +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/icons/kaleidoscope.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/icons/kaleidoscope_flat.svg +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/icons/kaleidoscope_stack_angle.svg +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/icons/kaleidoscope_stack_vert.svg +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/icons/pause.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/icons/play.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/icons/rsna_icon.icns +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/icons/rsna_icon.ico +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/icons/rsna_icon.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/icons/rsna_logo_alpha.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/icons/rsna_logo_head_profile.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/icons/rsna_logo_head_profile_1024x1024.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/icons/rsna_logo_head_profile_titled.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/icons/rsna_titled_logo.svg +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/icons/rsna_titled_logo_alpha.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/icons/signpath_logo.svg +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/LC_MESSAGES/messages.mo +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/LC_MESSAGES/messages.po +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/1_/303/274bersicht.html" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/2_deidentifikationsprotokoll.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/3_anonymisierungsprojekte_verwalten.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/4_projekteinstellungen.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/5_bedienung.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/6_lizenz.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/AWSCognitoCredentials.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/AbfrageAbrufenImportieren.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/Auswahlabfrage.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/BildarchivQRServer.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/Dashboard.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/Dateiauswahloptionen.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/DateienImportieren.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/ExportServer.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/ExportStudienAWS.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/ExportStudienStatus.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/ImportlokalenDateisystem.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/KlonenProjekts.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/LokalerServer.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/Modalit/303/244ten.png" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/Netzwerk-Zeit/303/274berschreitungen.png" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/NeueProjekteinstellungen.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/NeuesProjekt.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/Patienten-Such-CSV-Datei.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/PatientenPHI.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/Projektschlie/303/237en.png" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/Protokollierungsstufen.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/Speicherklassen.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/Speicherverzeichnis.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/TransferSyntaxen.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/VerzeichnisAusw/303/244hlen.png" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/Welcome_de_osx_light.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/Welcome_de_win_light.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/html/images/Wiederer/303/266ffnenProjekts.png" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/whitelists/ct.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/whitelists/dx.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/whitelists/mg.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/whitelists/mr.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/de/whitelists/us.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/LC_MESSAGES/messages.mo +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/LC_MESSAGES/messages.po +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/LOINC_StudyDescription.csv +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/1_overview.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/2_ai features.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/3_deidentification protocol.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/4_managing anonymization projects.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/5_project settings.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/6_operation.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/7_license.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/ai_features/ai batch process.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/ai_features/embedded_phi.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/ai_features/face de-identify.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/ai_features/harmonize.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/ai_features/remove burnt-in annotation.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/AWSCognitoCredentials.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/CloneProject.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/CloseProject.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/Dashboard.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/ExportServer.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/ExportStudiesAWS.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/ExportStudiesStatus.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/ImportFilesDialog.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/ImportFilesMenu.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/ImportStudiesDialog.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/ImportStudiesResult.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/LocalServer.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/LoggingLevels.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/Modalities.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/NetworkTimeouts.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/NewProject.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/NewProjectSettings.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/OpenLogViewer.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/OpenRecent.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/PatientLookupData.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/PatientLookupSave.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/QueryRetrieveImport.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/QueryServer.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/SelectDirectory.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/SelectFiles.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/SelectQuery.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/StorageClasses.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/StorageDirectory.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/TransferSyntaxes.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/Welcome_en_osx_light.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/html/images/Welcome_en_win_light.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/whitelists/ct.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/whitelists/dx.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/whitelists/mg.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/whitelists/mr.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/en_US/whitelists/us.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/LC_MESSAGES/messages.mo +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/LC_MESSAGES/messages.po +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/1_visi/303/263n general.html" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/2_protocolo de desidentificaci/303/263n.html" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/3_gesti/303/263n de proyectos.html" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/4_configuraci/303/263n del proyecto.html" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/5_operaci/303/263n.html" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/6_licencia.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/AWSCognitoCredenciales.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/AbrirReciente.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/CerrarProyecto.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/ClasesDeAlmacenamiento.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/Clonaci/303/263nDeProyecto.png" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/Configuraci/303/263nDelProyecto.png" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/ConsultarRecuperarImportar.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/DatosDeB/303/272squedaDePaciente.png" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/DirectorioDeAlmacenamiento.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/ExportarEstudiosAWS.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/ExportarEstudiosEstado.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/GuardarB/303/272squedaDePaciente.png" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/ImportarArchivos.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/ImportarArchivosDi/303/241logo.png" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/ImportarEstudiosDi/303/241logo.png" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/ImportarEstudiosResultado.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/Modalidades.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/NivelesDeRegistro.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/NuevoProyecto.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/PanelDeControl.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/SeleccionarArchivos.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/SeleccionarDirectorio.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/SeleccionarImportar.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/ServidorDeConsulta.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/ServidorDeExportaci/303/263n.png" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/ServidorLocal.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/SintaxisDeTransferencia.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/TimeoutsDeRed.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/Welcome_es_osx_light.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html/images/Welcome_es_win_light.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html_bak/1_visi/303/263n general.html" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html_bak/2_protocolo de desidentificaci/303/263n.html" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html_bak/3_gesti/303/263n de proyectos.html" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html_bak/4_configuraci/303/263n del proyecto.html" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html_bak/5_operaci/303/263n.html" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/html_bak/6_licencia.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/whitelists/ct.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/whitelists/dx.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/whitelists/mg.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/whitelists/mr.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/es/whitelists/us.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/extract_translations.sh +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/fr/LC_MESSAGES/messages.mo +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/fr/LC_MESSAGES/messages.po +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/fr/html/1_aper/303/247u.html" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/fr/html/2_protocole de d/303/251sidentification.html" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/fr/html/3_gestion de projet.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/fr/html/4_param/303/250tres du projet.html" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/fr/html/5_op/303/251ration.html" +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/fr/html/6_licence.html +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/fr/html/images/Welcome_fr_osx_light.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/fr/html/images/Welcome_fr_win_light.png +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/fr/whitelists/ct.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/fr/whitelists/dx.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/fr/whitelists/mg.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/fr/whitelists/mr.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/fr/whitelists/us.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/messages.pot +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/locales/update_translations.sh +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/scripts/README.md +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/scripts/default-anonymizer.script +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/tcia_kb/TCIAPrivateTagKB-02-01-2024-formatted.csv +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/themes/dark-blue.json +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/assets/themes/rsna_theme.json +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/batch_config.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/blur_face/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/blur_face/pipeline.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/blur_face/status.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/README.md +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/classify_series.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/entity_labels.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/metadata/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/metadata/extract.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/metadata/iod_allowlist.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/metadata/iod_qc.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/metadata/ner_compile.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/metadata/scrub.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/metadata/series_assessment.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/metadata/series_index.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/metadata/viewer_tree.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/ner/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/ner/cache.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/ner/engine.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/ner/pools/en_US/SOURCE.md +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/ner/pools/en_US/cities.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/ner/pools/en_US/first_names.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/ner/pools/en_US/first_names_female.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/ner/pools/en_US/first_names_male.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/ner/pools/en_US/last_names.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/ner/pools/en_US/streets.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/ner/radiology_filters.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/ner/synthetic_phi.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/pixel/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/pixel/cache.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/pixel/detect_text.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/pixel/exclude_zones.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/pixel/ocr_transcript_sr.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/pixel/remove_scope.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/report/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/embedded_phi/report/process_report_text.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/feature_availability.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/feature_ids.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/_playbook_gettext.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/description_components.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/description_mapping_store.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/docs/XR_US_MG.md +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/loinc_study.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/model_slot.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/playbook.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/playbook_planar.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/profile_2d.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/timings.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/xp_bodypart/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/xp_bodypart/cache.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/xp_bodypart/fuse.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/xp_bodypart/labels.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/xp_bodypart/model.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/xp_bodypart/predict.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/xp_bodypart/preprocess.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/xr_chest_view/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/xr_chest_view/cache.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/xr_chest_view/fuse.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/xr_chest_view/labels.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/xr_chest_view/model.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/xr_chest_view/predict.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/harmonize/xr_chest_view/preprocess.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/model_download.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/tseg/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/tseg/cache.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/tseg/config.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/tseg/contrast.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/tseg/dicom_geometry.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/tseg/docs/README.md +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/tseg/face_gate.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/tseg/geometry_types.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/tseg/head_signals.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/tseg/ml_env.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/tseg/modality_profile.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/tseg/model_cache.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/tseg/readiness.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/tseg/regions.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/tseg/seg_retention.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/tseg/segment.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/tseg/series_classification.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ai/tseg/ts_probe.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/analytics/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/analytics/dataset.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/analytics/ledger.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/analytics/prefs.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/annotations/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/annotations/brush.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/annotations/export_dicom_seg.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/annotations/export_nii.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/annotations/import_nii.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/annotations/planar_geometry.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/annotations/store.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/annotations/volumes.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/anonymizer.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/ctp_lookup.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/dates.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/dicom/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/dicom/association.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/dicom/dicomweb/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/dicom/dicomweb/qido.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/dicom/dicomweb/session.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/dicom/dicomweb/stow.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/dicom/dicomweb/wado.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/dicom/echo_scu.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/dicom/find_scu.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/dicom/hierarchies.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/dicom/requests.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/dicom/retrieve_scu.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/dicom/scp.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/dicom/store_scu.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/headless.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/headless_io.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/jobs/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/jobs/runner.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/jobs/work_state.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/phi/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/private_tags/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/private_tags/convert_tcia_private_kb.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/private_tags/dateinc.txt +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/private_tags/private_tags.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/private_tags/tcia_kb_data.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/project.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/script/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/script/compile.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/script/date_rules.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/script/document.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/script/e1_1_basic_profile.json +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/script/e1_1_retain_tags.json +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/script/operands.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/script/option_explanations.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/script/options.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/script/paths.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/script/retain_option_tags.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/script/tcia_research_operands.json +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/series/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/series/series_overlay.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/controller/series/workspace.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/mcp/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/mcp/api/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/mcp/api/catalog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/mcp/api/handlers.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/mcp/api/schema_json.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/mcp/api/schemas.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/mcp/api/wire.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/mcp/assets/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/mcp/assets/instructions.md +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/mcp/assets/setup_help.json +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/mcp/instructions.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/mcp/middleware/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/mcp/middleware/call_logging.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/mcp/modality_tokens.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/mcp/ops.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/mcp/server.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/mcp/session.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/mcp/snapshots.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/model/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/model/project.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/model/settings_validate.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/model/sqlite_schema.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/utils/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/utils/app_state.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/utils/dicom_dictionary.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/utils/logging.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/utils/memory.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/utils/modalities.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/utils/network.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/utils/storage/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/utils/storage/dicom_tree.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/utils/storage/java_index.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/utils/translate.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/utils/version.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/ai/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/ai/ai_batch_process_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/ai/ai_features_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/ai/blur_face_results.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/ai/face_blur_review_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/ai/features/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/ai/features/availability.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/ai/features/catalog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/ai/features/look.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/ai/features/panel.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/ai/harmonize_description.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/ai/harmonize_results.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/ai/harmonize_run_options_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/ai/modality_whitelist_preview_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/ai/set_description_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/common/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/common/ctk_safe.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/common/filesystem_drop.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/common/fonts.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/common/help_docs.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/common/html_view.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/common/job_poller.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/common/navigation.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/common/phi_action_labels.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/common/tooltip.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/common/treeview_chrome.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/common/ux_fields.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/ocr_ui.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/project/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/project/delete_studies_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/project/description_mappings.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/project/export.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/project/import_files_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/project/import_studies_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/project/query_retrieve_import.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/reports/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/reports/entity_colors.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/reports/entity_legend.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/reports/open_workspace.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/reports/pdf_page_view.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/reports/report_canvas.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/series/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/series/anatomy_overlay.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/series/new_segment_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/series/series_overlay.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/settings/anonymizer_script_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/settings/aws_cognito_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/settings/deidentification_options_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/settings/dicom_node_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/settings/logging_levels_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/settings/lookup_table_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/settings/modalites_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/settings/network_timeouts_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/settings/script_editor.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/settings/settings_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/settings/sop_classes_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/settings/transfer_syntaxes_dialog.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/shell/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/shell/analytics_charts.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/shell/dashboard.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/anonymizer/view/shell/welcome.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/README.md +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/__init__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/__main__.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/answer_filter.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/assets/AiBatchConfig.json +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/assets/ProjectModel.json +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/assets/smoke20_random_patients.json +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/cli.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/inventory.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/ner_presentation_probe.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/paths.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/project_prep.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/report.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/score_official.py +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/scorecards/README.md +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/scorecards/source_answer_errors.md +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/scorecards/test_20261101_full.md +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/scorecards/validation_20261101_full.md +0 -0
- {rsna_anonymizer-19.1.0.dev4 → rsna_anonymizer-19.1.0.dev6}/src/eval/midi_b/vendor/README.md +0 -0
|
@@ -6,6 +6,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [19.1.0.dev6]
|
|
10
|
+
- PyPI development pre-release of 19.1 on branch `dev` (install with `uv pip install --pre rsna-anonymizer`)
|
|
11
|
+
- Dataset Set description: PT/NM-only studies (no CT/MR Harmonize path) can double-click series or study descriptions and pick names from the LOINC table (`PET+CT` when the study wording looks like PET-CT); AI Harmonize for CT/MR studies is unchanged
|
|
12
|
+
- Projection View: loading shell while projections build, then size the window to the tile grid (fixes empty/clipped multi-study opens)
|
|
13
|
+
- AI Batch Embedded PHI logs: series and instance lines use counts only (no OCR/descriptor/report PHI text in the batch log)
|
|
14
|
+
- Docs: refresh Dashboard Analytics, De-identification Options, and related View/Process help screenshots; add Dataset after Metadata Replace PHI + Save shot
|
|
15
|
+
|
|
16
|
+
## [19.1.0.dev5]
|
|
17
|
+
- PyPI development pre-release of 19.1 on branch `dev` (install with `uv pip install --pre rsna-anonymizer`)
|
|
18
|
+
- After metadata PHI removal (Series View Metadata Save and AI Batch), Dataset Original Description and Embedded PHI columns refresh from cleaned Study/Series Description and removed spans; lookup CSV adds CleanedStudyDescription and CleanedSeriesDescription after the sticky Study/Series Description columns
|
|
19
|
+
- AI Batch Embedded PHI: Pixel PHI / Metadata / Reports path checkboxes; Match strictness and Whitelist stay visible when Pixel PHI is off
|
|
20
|
+
- Series View windowing keeps PET window widths below one, with shared auto-window helpers and projection/default-window alignment
|
|
21
|
+
|
|
9
22
|
## [19.1.0.dev4]
|
|
10
23
|
- PyPI development pre-release of 19.1 on branch `dev` (install with `uv pip install --pre rsna-anonymizer`)
|
|
11
24
|
- PyPI source archive and wheel ship the installable packages. Pixel PHI experiment output is no longer stored in the repository. Help-site screenshots and the curated DICOM fixtures stay in git.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: rsna-anonymizer
|
|
3
|
-
Version: 19.1.0.
|
|
3
|
+
Version: 19.1.0.dev6
|
|
4
4
|
Summary: RSNA DICOM Anonymizer
|
|
5
5
|
Project-URL: Homepage, https://github.com/RSNA/anonymizer
|
|
6
6
|
Author-email: Algorhythm Software <michael@dx.life>
|
|
@@ -62,7 +62,7 @@ Other languages: [Deutsch](readme.de.md), [Español](readme.es.md), [Français](
|
|
|
62
62
|
[](https://pypi.org/project/rsna-anonymizer/)
|
|
63
63
|
[](https://www.python.org/downloads/)
|
|
64
64
|
|
|
65
|
-
**Version 19.1.0.
|
|
65
|
+
**Version 19.1.0.dev6** is the current 19.1 development pre-release on the `dev` branch (`uv pip install --pre rsna-anonymizer`). Stable **19.0.10** remains on `master`. Requires **Python 3.11–3.14** with **tkinter** built in. Prefer **3.12** for the widest Tk/AI wheel coverage; avoid **3.14.1** (torchvision excludes that patch).
|
|
66
66
|
|
|
67
67
|
## Install
|
|
68
68
|
|
|
@@ -88,7 +88,7 @@ uv --version
|
|
|
88
88
|
|
|
89
89
|
### 2. Install Python with tkinter, then the app
|
|
90
90
|
|
|
91
|
-
The desktop UI needs **tkinter**. Install a Python that ships with it, then create the venv and install **19.1.0.
|
|
91
|
+
The desktop UI needs **tkinter**. Install a Python that ships with it, then create the venv and install **19.1.0.dev6** (`--pre`):
|
|
92
92
|
|
|
93
93
|
| Platform | Ensure tkinter is available |
|
|
94
94
|
| --- | --- |
|
|
@@ -101,7 +101,7 @@ uv python install 3.12 # or: 3.11 / 3.13 / 3.14
|
|
|
101
101
|
uv venv rsna-anonymizer --python 3.12 # or: --python 3.11 / 3.13 / 3.14
|
|
102
102
|
source rsna-anonymizer/bin/activate # Windows: rsna-anonymizer\Scripts\activate
|
|
103
103
|
|
|
104
|
-
uv pip install --pre rsna-anonymizer # version 19.1.0.
|
|
104
|
+
uv pip install --pre rsna-anonymizer # version 19.1.0.dev6
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
### 3. Verify the install
|
|
@@ -109,7 +109,7 @@ uv pip install --pre rsna-anonymizer # version 19.1.0.dev4
|
|
|
109
109
|
```bash
|
|
110
110
|
python --version # 3.11.x–3.14.x
|
|
111
111
|
python -m tkinter # a small Tk window must open — required for the UI
|
|
112
|
-
rsna-anonymizer --version # should report 19.1.0.
|
|
112
|
+
rsna-anonymizer --version # should report 19.1.0.dev6
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
If `python -m tkinter` fails, the venv’s Python was built without Tk: fix the platform step above, recreate the venv, and reinstall.
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
[](https://pypi.org/project/rsna-anonymizer/)
|
|
8
8
|
[](https://www.python.org/downloads/)
|
|
9
9
|
|
|
10
|
-
**Version 19.1.0.
|
|
10
|
+
**Version 19.1.0.dev6** ist die aktuelle 19.1-Entwicklungs-Vorabversion auf dem Branch `dev` (`uv pip install --pre rsna-anonymizer`). Stabil bleibt **19.0.10** auf `master`. Benötigt **Python 3.11–3.14** mit eingebautem **tkinter**. Empfohlen ist **3.12**; **3.14.1** vermeiden (torchvision schließt diesen Patch aus).
|
|
11
11
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
|
@@ -33,7 +33,7 @@ uv --version
|
|
|
33
33
|
|
|
34
34
|
### 2. Python mit tkinter und die App installieren
|
|
35
35
|
|
|
36
|
-
Die Desktop-Oberfläche braucht **tkinter**. Installieren Sie ein Python mit tkinter, erstellen Sie die venv und installieren Sie **19.1.0.
|
|
36
|
+
Die Desktop-Oberfläche braucht **tkinter**. Installieren Sie ein Python mit tkinter, erstellen Sie die venv und installieren Sie **19.1.0.dev6** (`--pre`):
|
|
37
37
|
|
|
38
38
|
| Plattform | tkinter verfügbar machen |
|
|
39
39
|
| --- | --- |
|
|
@@ -46,7 +46,7 @@ uv python install 3.12 # or: 3.11 / 3.13 / 3.14
|
|
|
46
46
|
uv venv rsna-anonymizer --python 3.12 # or: --python 3.11 / 3.13 / 3.14
|
|
47
47
|
source rsna-anonymizer/bin/activate # Windows: rsna-anonymizer\Scripts\activate
|
|
48
48
|
|
|
49
|
-
uv pip install --pre rsna-anonymizer # version 19.1.0.
|
|
49
|
+
uv pip install --pre rsna-anonymizer # version 19.1.0.dev6
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
### 3. Installation prüfen
|
|
@@ -54,7 +54,7 @@ uv pip install --pre rsna-anonymizer # version 19.1.0.dev4
|
|
|
54
54
|
```bash
|
|
55
55
|
python --version # 3.11.x–3.14.x
|
|
56
56
|
python -m tkinter # a small Tk window must open — required for the UI
|
|
57
|
-
rsna-anonymizer --version # should report 19.1.0.
|
|
57
|
+
rsna-anonymizer --version # should report 19.1.0.dev6
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
Wenn `python -m tkinter` fehlschlägt, wurde das Python der venv ohne Tk gebaut: Plattformschritt oben korrigieren, venv neu anlegen und neu installieren.
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
[](https://pypi.org/project/rsna-anonymizer/)
|
|
8
8
|
[](https://www.python.org/downloads/)
|
|
9
9
|
|
|
10
|
-
**La versión 19.1.0.
|
|
10
|
+
**La versión 19.1.0.dev6** es la prelanzamiento de desarrollo 19.1 actual en la rama `dev` (`uv pip install --pre rsna-anonymizer`). La estable **19.0.10** permanece en `master`. Requiere **Python 3.11–3.14** con **tkinter** incluido. Se recomienda **3.12**; evite **3.14.1** (torchvision excluye ese parche).
|
|
11
11
|
|
|
12
12
|
## Instalación
|
|
13
13
|
|
|
@@ -33,7 +33,7 @@ uv --version
|
|
|
33
33
|
|
|
34
34
|
### 2. Instalar Python con tkinter y la aplicación
|
|
35
35
|
|
|
36
|
-
La interfaz de escritorio necesita **tkinter**. Instale un Python que lo incluya, cree el venv e instale **19.1.0.
|
|
36
|
+
La interfaz de escritorio necesita **tkinter**. Instale un Python que lo incluya, cree el venv e instale **19.1.0.dev6** (`--pre`):
|
|
37
37
|
|
|
38
38
|
| Plataforma | Asegurar tkinter |
|
|
39
39
|
| --- | --- |
|
|
@@ -46,7 +46,7 @@ uv python install 3.12 # or: 3.11 / 3.13 / 3.14
|
|
|
46
46
|
uv venv rsna-anonymizer --python 3.12 # or: --python 3.11 / 3.13 / 3.14
|
|
47
47
|
source rsna-anonymizer/bin/activate # Windows: rsna-anonymizer\Scripts\activate
|
|
48
48
|
|
|
49
|
-
uv pip install --pre rsna-anonymizer # version 19.1.0.
|
|
49
|
+
uv pip install --pre rsna-anonymizer # version 19.1.0.dev6
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
### 3. Verificar la instalación
|
|
@@ -54,7 +54,7 @@ uv pip install --pre rsna-anonymizer # version 19.1.0.dev4
|
|
|
54
54
|
```bash
|
|
55
55
|
python --version # 3.11.x–3.14.x
|
|
56
56
|
python -m tkinter # a small Tk window must open — required for the UI
|
|
57
|
-
rsna-anonymizer --version # should report 19.1.0.
|
|
57
|
+
rsna-anonymizer --version # should report 19.1.0.dev6
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
Si `python -m tkinter` falla, el Python del venv se compiló sin Tk: corrija el paso de la plataforma, recree el venv y reinstale.
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
[](https://pypi.org/project/rsna-anonymizer/)
|
|
8
8
|
[](https://www.python.org/downloads/)
|
|
9
9
|
|
|
10
|
-
**La version 19.1.0.
|
|
10
|
+
**La version 19.1.0.dev6** est la préversion de développement 19.1 actuelle sur la branche `dev` (`uv pip install --pre rsna-anonymizer`). La stable **19.0.10** reste sur `master`. Nécessite **Python 3.11–3.14** avec **tkinter** intégré. Préférez **3.12** ; évitez **3.14.1** (torchvision exclut ce correctif).
|
|
11
11
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
|
@@ -33,7 +33,7 @@ uv --version
|
|
|
33
33
|
|
|
34
34
|
### 2. Installer Python avec tkinter, puis l’application
|
|
35
35
|
|
|
36
|
-
L’interface de bureau a besoin de **tkinter**. Installez un Python qui l’inclut, créez le venv et installez **19.1.0.
|
|
36
|
+
L’interface de bureau a besoin de **tkinter**. Installez un Python qui l’inclut, créez le venv et installez **19.1.0.dev6** (`--pre`) :
|
|
37
37
|
|
|
38
38
|
| Plateforme | Assurer la disponibilité de tkinter |
|
|
39
39
|
| --- | --- |
|
|
@@ -46,7 +46,7 @@ uv python install 3.12 # or: 3.11 / 3.13 / 3.14
|
|
|
46
46
|
uv venv rsna-anonymizer --python 3.12 # or: --python 3.11 / 3.13 / 3.14
|
|
47
47
|
source rsna-anonymizer/bin/activate # Windows: rsna-anonymizer\Scripts\activate
|
|
48
48
|
|
|
49
|
-
uv pip install --pre rsna-anonymizer # version 19.1.0.
|
|
49
|
+
uv pip install --pre rsna-anonymizer # version 19.1.0.dev6
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
### 3. Vérifier l’installation
|
|
@@ -54,7 +54,7 @@ uv pip install --pre rsna-anonymizer # version 19.1.0.dev4
|
|
|
54
54
|
```bash
|
|
55
55
|
python --version # 3.11.x–3.14.x
|
|
56
56
|
python -m tkinter # a small Tk window must open — required for the UI
|
|
57
|
-
rsna-anonymizer --version # should report 19.1.0.
|
|
57
|
+
rsna-anonymizer --version # should report 19.1.0.dev6
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
Si `python -m tkinter` échoue, le Python du venv a été compilé sans Tk : corrigez l’étape plateforme ci-dessus, recréez le venv et réinstallez.
|
|
@@ -9,7 +9,7 @@ Other languages: [Deutsch](readme.de.md), [Español](readme.es.md), [Français](
|
|
|
9
9
|
[](https://pypi.org/project/rsna-anonymizer/)
|
|
10
10
|
[](https://www.python.org/downloads/)
|
|
11
11
|
|
|
12
|
-
**Version 19.1.0.
|
|
12
|
+
**Version 19.1.0.dev6** is the current 19.1 development pre-release on the `dev` branch (`uv pip install --pre rsna-anonymizer`). Stable **19.0.10** remains on `master`. Requires **Python 3.11–3.14** with **tkinter** built in. Prefer **3.12** for the widest Tk/AI wheel coverage; avoid **3.14.1** (torchvision excludes that patch).
|
|
13
13
|
|
|
14
14
|
## Install
|
|
15
15
|
|
|
@@ -35,7 +35,7 @@ uv --version
|
|
|
35
35
|
|
|
36
36
|
### 2. Install Python with tkinter, then the app
|
|
37
37
|
|
|
38
|
-
The desktop UI needs **tkinter**. Install a Python that ships with it, then create the venv and install **19.1.0.
|
|
38
|
+
The desktop UI needs **tkinter**. Install a Python that ships with it, then create the venv and install **19.1.0.dev6** (`--pre`):
|
|
39
39
|
|
|
40
40
|
| Platform | Ensure tkinter is available |
|
|
41
41
|
| --- | --- |
|
|
@@ -48,7 +48,7 @@ uv python install 3.12 # or: 3.11 / 3.13 / 3.14
|
|
|
48
48
|
uv venv rsna-anonymizer --python 3.12 # or: --python 3.11 / 3.13 / 3.14
|
|
49
49
|
source rsna-anonymizer/bin/activate # Windows: rsna-anonymizer\Scripts\activate
|
|
50
50
|
|
|
51
|
-
uv pip install --pre rsna-anonymizer # version 19.1.0.
|
|
51
|
+
uv pip install --pre rsna-anonymizer # version 19.1.0.dev6
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
### 3. Verify the install
|
|
@@ -56,7 +56,7 @@ uv pip install --pre rsna-anonymizer # version 19.1.0.dev4
|
|
|
56
56
|
```bash
|
|
57
57
|
python --version # 3.11.x–3.14.x
|
|
58
58
|
python -m tkinter # a small Tk window must open — required for the UI
|
|
59
|
-
rsna-anonymizer --version # should report 19.1.0.
|
|
59
|
+
rsna-anonymizer --version # should report 19.1.0.dev6
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
If `python -m tkinter` fails, the venv’s Python was built without Tk: fix the platform step above, recreate the venv, and reinstall.
|
|
@@ -129,7 +129,13 @@ format_remove_pixel_phi_series_message(*, modified_count: int, total: int, texts
|
|
|
129
129
|
Series outcome line: Series View wording, counts only (never OCR/PHI strings).
|
|
130
130
|
|
|
131
131
|
format_remove_pixel_phi_instance_detail(*, instance_index: int, instance_total: int, modified: bool, texts: Sequence[str], removal_mode: PixelPhiRemovalMode=PixelPhiRemovalMode.BLACKOUT, pixels_changed: int=0, ocr_remove_mode: OcrRemoveMode=...) -> str
|
|
132
|
-
Per-instance detail: Series View wording, counts only (never OCR/PHI strings).
|
|
132
|
+
Per-instance detail for detections only: Series View wording, counts only (never OCR/PHI strings).
|
|
133
|
+
|
|
134
|
+
format_clean_descriptors_series_message(*, modified_count: int, total: int, texts_removed: Sequence[str]=()) -> str
|
|
135
|
+
Series Clean Descriptors summary: counts only (never descriptor/PHI strings).
|
|
136
|
+
|
|
137
|
+
format_report_phi_series_message(*, modified_count: int, total: int, texts_removed: Sequence[str]=()) -> str
|
|
138
|
+
Series report-text PHI summary: counts only (never report/PHI strings).
|
|
133
139
|
|
|
134
140
|
normalize_selected_algorithms(algorithms: Sequence[AiBatchAlgorithm]) -> tuple[AiBatchAlgorithm, ...]
|
|
135
141
|
Return selected algorithms in fixed execution order.
|
|
@@ -907,6 +913,8 @@ def format_remove_pixel_phi_series_message(
|
|
|
907
913
|
) -> str:
|
|
908
914
|
"""Series outcome line: Series View wording, counts only (never OCR/PHI strings)."""
|
|
909
915
|
del pixels_changed # Kept for call-site compatibility; not logged.
|
|
916
|
+
if modified_count <= 0:
|
|
917
|
+
return _("No burnt-in text detected") + f" ({total} " + _("instances scanned") + ")"
|
|
910
918
|
parts = [
|
|
911
919
|
_("PHI removed"),
|
|
912
920
|
f"{modified_count}/{total} " + _("instance(s)"),
|
|
@@ -929,7 +937,7 @@ def format_remove_pixel_phi_instance_detail(
|
|
|
929
937
|
pixels_changed: int = 0,
|
|
930
938
|
ocr_remove_mode: OcrRemoveMode = OcrRemoveMode.NON_WHITELISTED,
|
|
931
939
|
) -> str:
|
|
932
|
-
"""Per-instance detail
|
|
940
|
+
"""Per-instance detail for detections only: counts only (never OCR/PHI strings)."""
|
|
933
941
|
del pixels_changed # Kept for call-site compatibility; not logged.
|
|
934
942
|
position = _("Instance") + f" {instance_index}/{instance_total}"
|
|
935
943
|
region_count = _ocr_text_region_count(texts)
|
|
@@ -946,6 +954,44 @@ def format_remove_pixel_phi_instance_detail(
|
|
|
946
954
|
return f"{position}: {_('no burnt-in text detected')}"
|
|
947
955
|
|
|
948
956
|
|
|
957
|
+
def format_clean_descriptors_series_message(
|
|
958
|
+
*,
|
|
959
|
+
modified_count: int,
|
|
960
|
+
total: int,
|
|
961
|
+
texts_removed: Sequence[str] = (),
|
|
962
|
+
) -> str:
|
|
963
|
+
"""Series Clean Descriptors summary: counts only (never descriptor/PHI strings)."""
|
|
964
|
+
if modified_count <= 0:
|
|
965
|
+
return _("Clean Descriptors") + ": " + _("no changes") + f" ({total} " + _("instances scanned") + ")"
|
|
966
|
+
parts = [
|
|
967
|
+
_("Clean Descriptors"),
|
|
968
|
+
f"{modified_count}/{total} " + _("instance(s)"),
|
|
969
|
+
]
|
|
970
|
+
region_count = _ocr_text_region_count(texts_removed)
|
|
971
|
+
if region_count:
|
|
972
|
+
parts.append(_format_phi_removed_count(region_count))
|
|
973
|
+
return " · ".join(parts)
|
|
974
|
+
|
|
975
|
+
|
|
976
|
+
def format_report_phi_series_message(
|
|
977
|
+
*,
|
|
978
|
+
modified_count: int,
|
|
979
|
+
total: int,
|
|
980
|
+
texts_removed: Sequence[str] = (),
|
|
981
|
+
) -> str:
|
|
982
|
+
"""Series report-text PHI summary: counts only (never report/PHI strings)."""
|
|
983
|
+
if modified_count <= 0:
|
|
984
|
+
return _("No report PHI detected") + f" ({total} " + _("instances scanned") + ")"
|
|
985
|
+
parts = [
|
|
986
|
+
_("Report PHI removed"),
|
|
987
|
+
f"{modified_count}/{total} " + _("instance(s)"),
|
|
988
|
+
]
|
|
989
|
+
region_count = _ocr_text_region_count(texts_removed)
|
|
990
|
+
if region_count:
|
|
991
|
+
parts.append(_format_phi_removed_count(region_count))
|
|
992
|
+
return " · ".join(parts)
|
|
993
|
+
|
|
994
|
+
|
|
949
995
|
def _log_workflow_progress_step(
|
|
950
996
|
log_workflow: Callable[[str], None],
|
|
951
997
|
step_progress: Callable[[float, str], None],
|
|
@@ -1229,7 +1275,8 @@ def _apply_report_text_phi_series(
|
|
|
1229
1275
|
|
|
1230
1276
|
modified_count = 0
|
|
1231
1277
|
all_removed: list[str] = []
|
|
1232
|
-
|
|
1278
|
+
instance_total = len(dcm_paths)
|
|
1279
|
+
for instance_index, dcm_path in enumerate(dcm_paths, start=1):
|
|
1233
1280
|
try:
|
|
1234
1281
|
|
|
1235
1282
|
ds = dcmread(dcm_path)
|
|
@@ -1265,7 +1312,13 @@ def _apply_report_text_phi_series(
|
|
|
1265
1312
|
all_removed.extend(removed_texts)
|
|
1266
1313
|
modified_count += 1
|
|
1267
1314
|
if on_log_detail is not None and removed_texts:
|
|
1268
|
-
|
|
1315
|
+
region_count = _ocr_text_region_count(removed_texts)
|
|
1316
|
+
on_log_detail(
|
|
1317
|
+
_("Instance")
|
|
1318
|
+
+ f" {instance_index}/{instance_total}: "
|
|
1319
|
+
+ _("Report PHI removed")
|
|
1320
|
+
+ f" · {_format_phi_removed_count(region_count)}"
|
|
1321
|
+
)
|
|
1269
1322
|
except Exception as exc: # noqa: BLE001
|
|
1270
1323
|
logger.error("Report text PHI failed for %s: %s", dcm_path, exc)
|
|
1271
1324
|
return AiBatchOutcome(
|
|
@@ -1275,6 +1328,13 @@ def _apply_report_text_phi_series(
|
|
|
1275
1328
|
str(exc),
|
|
1276
1329
|
)
|
|
1277
1330
|
|
|
1331
|
+
series_message = format_report_phi_series_message(
|
|
1332
|
+
modified_count=modified_count,
|
|
1333
|
+
total=instance_total,
|
|
1334
|
+
texts_removed=all_removed,
|
|
1335
|
+
)
|
|
1336
|
+
if on_log_detail is not None:
|
|
1337
|
+
on_log_detail(series_message)
|
|
1278
1338
|
if mark_scanned:
|
|
1279
1339
|
anon_model.set_series_embedded_phi_scanned(series_uid, scanned=True)
|
|
1280
1340
|
if modified_count == 0:
|
|
@@ -1282,13 +1342,13 @@ def _apply_report_text_phi_series(
|
|
|
1282
1342
|
series_path,
|
|
1283
1343
|
AiBatchAlgorithm.REMOVE_PIXEL_PHI,
|
|
1284
1344
|
"complete",
|
|
1285
|
-
|
|
1345
|
+
series_message,
|
|
1286
1346
|
)
|
|
1287
1347
|
return AiBatchOutcome(
|
|
1288
1348
|
series_path,
|
|
1289
1349
|
AiBatchAlgorithm.REMOVE_PIXEL_PHI,
|
|
1290
1350
|
"ok",
|
|
1291
|
-
|
|
1351
|
+
series_message,
|
|
1292
1352
|
)
|
|
1293
1353
|
|
|
1294
1354
|
|
|
@@ -1298,12 +1358,19 @@ def _scrub_series_descriptors(
|
|
|
1298
1358
|
dcm_paths: Sequence[Path],
|
|
1299
1359
|
replace_mode: str = "blank",
|
|
1300
1360
|
project_dir: Path | None = None,
|
|
1361
|
+
anon_model: AnonymizerModel | None = None,
|
|
1301
1362
|
on_log_detail: Callable[[str], None] | None = None,
|
|
1302
1363
|
) -> tuple[int, list[str]]:
|
|
1303
|
-
"""Run Clean Descriptors on each instance; return (modified_count, removed texts).
|
|
1364
|
+
"""Run Clean Descriptors on each instance; return (modified_count, removed texts).
|
|
1365
|
+
|
|
1366
|
+
When anon_model is set, removed spans are merged into Instance.embedded_phi so
|
|
1367
|
+
the Dataset series row Embedded PHI column updates after the batch refresh.
|
|
1368
|
+
"""
|
|
1369
|
+
del series_path # retained for call-site clarity / future series-level hooks
|
|
1304
1370
|
mode = "synth" if str(replace_mode).strip().lower() == "synth" else "blank"
|
|
1305
1371
|
modified_count = 0
|
|
1306
1372
|
all_removed: list[str] = []
|
|
1373
|
+
instance_total = len(dcm_paths)
|
|
1307
1374
|
for dcm_path in dcm_paths:
|
|
1308
1375
|
try:
|
|
1309
1376
|
changed, removed = scrub_file_descriptors(
|
|
@@ -1317,8 +1384,28 @@ def _scrub_series_descriptors(
|
|
|
1317
1384
|
if changed:
|
|
1318
1385
|
modified_count += 1
|
|
1319
1386
|
all_removed.extend(removed)
|
|
1320
|
-
if
|
|
1321
|
-
|
|
1387
|
+
if anon_model is not None:
|
|
1388
|
+
if removed:
|
|
1389
|
+
apply_instance_embedded_phi_for_dcm(
|
|
1390
|
+
anon_model, dcm_path, removed, merge=True
|
|
1391
|
+
)
|
|
1392
|
+
# Keep Dataset Original Description in sync with cleaned tags.
|
|
1393
|
+
try:
|
|
1394
|
+
ds = dcmread(str(dcm_path), stop_before_pixels=True, force=True)
|
|
1395
|
+
anon_model.sync_descriptions_from_dataset(ds)
|
|
1396
|
+
except Exception:
|
|
1397
|
+
logger.exception(
|
|
1398
|
+
"Failed to sync Dataset descriptions after Clean Descriptors for %s",
|
|
1399
|
+
dcm_path,
|
|
1400
|
+
)
|
|
1401
|
+
if on_log_detail is not None and modified_count > 0:
|
|
1402
|
+
on_log_detail(
|
|
1403
|
+
format_clean_descriptors_series_message(
|
|
1404
|
+
modified_count=modified_count,
|
|
1405
|
+
total=instance_total,
|
|
1406
|
+
texts_removed=all_removed,
|
|
1407
|
+
)
|
|
1408
|
+
)
|
|
1322
1409
|
return modified_count, all_removed
|
|
1323
1410
|
|
|
1324
1411
|
|
|
@@ -1386,6 +1473,7 @@ def _apply_remove_pixel_phi_series(
|
|
|
1386
1473
|
dcm_paths=sorted(get_dcm_files(series_path)),
|
|
1387
1474
|
replace_mode=metadata_replace_mode,
|
|
1388
1475
|
project_dir=project_dir,
|
|
1476
|
+
anon_model=anon_model,
|
|
1389
1477
|
on_log_detail=on_log_detail,
|
|
1390
1478
|
)
|
|
1391
1479
|
except Exception as exc: # noqa: BLE001
|
|
@@ -1442,13 +1530,13 @@ def _apply_remove_pixel_phi_series(
|
|
|
1442
1530
|
)
|
|
1443
1531
|
|
|
1444
1532
|
modified_count = 0
|
|
1445
|
-
|
|
1446
|
-
all_removed_texts: list[str] = []
|
|
1533
|
+
pixel_removed_texts: list[str] = []
|
|
1447
1534
|
total_pixels_changed = 0
|
|
1448
1535
|
instance_total = len(dcm_paths)
|
|
1449
1536
|
ocr_remove_mode = ocr_remove_mode or ocr_remove_mode_from_legacy_whitelist(
|
|
1450
1537
|
use_modality_whitelist=True if use_modality_whitelist is None else use_modality_whitelist
|
|
1451
1538
|
)
|
|
1539
|
+
pixel_series_message = ""
|
|
1452
1540
|
if pixel_enabled:
|
|
1453
1541
|
ocr_whitelist = whitelist_arg_for_ocr_remove_mode(ocr_remove_mode)
|
|
1454
1542
|
series_match_mode = phi_match_mode or load_modality_phi_match_mode(
|
|
@@ -1483,9 +1571,10 @@ def _apply_remove_pixel_phi_series(
|
|
|
1483
1571
|
"failed",
|
|
1484
1572
|
str(exc),
|
|
1485
1573
|
)
|
|
1574
|
+
# Log only instances with detections; quiet files stay out of the workflow log.
|
|
1486
1575
|
if modified and pixels_changed > 0:
|
|
1487
1576
|
apply_instance_embedded_phi_for_dcm(anon_model, dcm_path, texts)
|
|
1488
|
-
|
|
1577
|
+
pixel_removed_texts.extend(texts)
|
|
1489
1578
|
modified_count += 1
|
|
1490
1579
|
total_pixels_changed += pixels_changed
|
|
1491
1580
|
if on_log_detail is not None and texts:
|
|
@@ -1501,7 +1590,7 @@ def _apply_remove_pixel_phi_series(
|
|
|
1501
1590
|
)
|
|
1502
1591
|
)
|
|
1503
1592
|
elif texts:
|
|
1504
|
-
|
|
1593
|
+
pixel_removed_texts.extend(texts)
|
|
1505
1594
|
if on_log_detail is not None:
|
|
1506
1595
|
on_log_detail(
|
|
1507
1596
|
format_remove_pixel_phi_instance_detail(
|
|
@@ -1513,26 +1602,20 @@ def _apply_remove_pixel_phi_series(
|
|
|
1513
1602
|
ocr_remove_mode=ocr_remove_mode,
|
|
1514
1603
|
)
|
|
1515
1604
|
)
|
|
1516
|
-
else:
|
|
1517
|
-
unchanged_count += 1
|
|
1518
|
-
if on_log_detail is not None and texts:
|
|
1519
|
-
on_log_detail(
|
|
1520
|
-
format_remove_pixel_phi_instance_detail(
|
|
1521
|
-
instance_index=instance_index,
|
|
1522
|
-
instance_total=instance_total,
|
|
1523
|
-
modified=False,
|
|
1524
|
-
texts=texts,
|
|
1525
|
-
removal_mode=removal_mode,
|
|
1526
|
-
ocr_remove_mode=ocr_remove_mode,
|
|
1527
|
-
)
|
|
1528
|
-
)
|
|
1529
1605
|
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1606
|
+
pixel_series_message = format_remove_pixel_phi_series_message(
|
|
1607
|
+
modified_count=modified_count,
|
|
1608
|
+
total=instance_total,
|
|
1609
|
+
texts_removed=pixel_removed_texts,
|
|
1610
|
+
pixels_changed=total_pixels_changed,
|
|
1611
|
+
removal_mode=removal_mode,
|
|
1612
|
+
ocr_remove_mode=ocr_remove_mode,
|
|
1613
|
+
)
|
|
1614
|
+
if on_log_detail is not None:
|
|
1615
|
+
on_log_detail(pixel_series_message)
|
|
1534
1616
|
|
|
1535
1617
|
meta_modified = 0
|
|
1618
|
+
meta_removed: list[str] = []
|
|
1536
1619
|
if metadata_enabled:
|
|
1537
1620
|
try:
|
|
1538
1621
|
meta_modified, meta_removed = _scrub_series_descriptors(
|
|
@@ -1540,9 +1623,9 @@ def _apply_remove_pixel_phi_series(
|
|
|
1540
1623
|
dcm_paths=dcm_paths,
|
|
1541
1624
|
replace_mode=metadata_replace_mode,
|
|
1542
1625
|
project_dir=project_dir,
|
|
1626
|
+
anon_model=anon_model,
|
|
1543
1627
|
on_log_detail=on_log_detail,
|
|
1544
1628
|
)
|
|
1545
|
-
all_removed_texts.extend(meta_removed)
|
|
1546
1629
|
except Exception as exc: # noqa: BLE001
|
|
1547
1630
|
return AiBatchOutcome(
|
|
1548
1631
|
series_path,
|
|
@@ -1554,9 +1637,12 @@ def _apply_remove_pixel_phi_series(
|
|
|
1554
1637
|
anon_model.set_series_embedded_phi_scanned(series_uid, scanned=True)
|
|
1555
1638
|
|
|
1556
1639
|
if modified_count == 0 and meta_modified == 0:
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1640
|
+
if pixel_enabled and pixel_series_message:
|
|
1641
|
+
message = pixel_series_message
|
|
1642
|
+
else:
|
|
1643
|
+
message = _("No burnt-in text detected") if pixel_enabled else _("No Embedded PHI detected")
|
|
1644
|
+
if instance_total > 1:
|
|
1645
|
+
message += f" ({instance_total} " + _("instances scanned") + ")"
|
|
1560
1646
|
return AiBatchOutcome(
|
|
1561
1647
|
series_path,
|
|
1562
1648
|
AiBatchAlgorithm.REMOVE_PIXEL_PHI,
|
|
@@ -1568,10 +1654,11 @@ def _apply_remove_pixel_phi_series(
|
|
|
1568
1654
|
series_path,
|
|
1569
1655
|
AiBatchAlgorithm.REMOVE_PIXEL_PHI,
|
|
1570
1656
|
"ok",
|
|
1571
|
-
|
|
1657
|
+
pixel_series_message
|
|
1658
|
+
or format_remove_pixel_phi_series_message(
|
|
1572
1659
|
modified_count=modified_count,
|
|
1573
1660
|
total=instance_total,
|
|
1574
|
-
texts_removed=
|
|
1661
|
+
texts_removed=pixel_removed_texts,
|
|
1575
1662
|
pixels_changed=total_pixels_changed,
|
|
1576
1663
|
removal_mode=removal_mode,
|
|
1577
1664
|
ocr_remove_mode=ocr_remove_mode,
|
|
@@ -1581,7 +1668,11 @@ def _apply_remove_pixel_phi_series(
|
|
|
1581
1668
|
series_path,
|
|
1582
1669
|
AiBatchAlgorithm.REMOVE_PIXEL_PHI,
|
|
1583
1670
|
"ok",
|
|
1584
|
-
|
|
1671
|
+
format_clean_descriptors_series_message(
|
|
1672
|
+
modified_count=meta_modified,
|
|
1673
|
+
total=instance_total,
|
|
1674
|
+
texts_removed=meta_removed,
|
|
1675
|
+
),
|
|
1585
1676
|
)
|
|
1586
1677
|
|
|
1587
1678
|
|