Open-Minds-Lab / mrQA

mrQA: tools for quality assurance in medical imaging datasets, including protocol compliance
https://open-minds-lab.github.io/mrQA/
Apache License 2.0
9 stars 6 forks source link

No DICOMs found (Bruker 7T Preclinical) #55

Open araikes opened 10 months ago

araikes commented 10 months ago

Description

Attempted to run this on mouse DICOMs from a Bruker 70/20 7-Tesla system running Paravision 360 v3.3 (backend software). Outputs include enhanced DICOMs. It appears to look for DICOMs in the right location but then reports no DICOMs

What I Did

(qctools) [adamraikes@gpu68 app_apoe]$ mrqa -d dicoms -f dicom -o mrqa -n compliance -v
2023-10-20 08:11:59,272 - INFO - Created temp file in mrqa
2023-10-20 08:12:24,233 - INFO - Localizer: Skipping /xdisk/adamraikes/app_apoe/dicoms/20230512_114500_apoemouse_APPCA_C1_VM6979_1_11/1/pdata/1/dicom
2023-10-20 08:12:29,049 - INFO - ACR/Phantom: /xdisk/adamraikes/app_apoe/dicoms/20230512_114500_apoemouse_APPCA_C1_VM6979_1_11/5/pdata/1/dicom
DicomDataset compliance is empty.
Traceback (most recent call last):
  File "/home/u26/adamraikes/.conda/envs/qctools/bin/mrqa", line 8, in <module>
    sys.exit(main())
  File "/home/u26/adamraikes/.conda/envs/qctools/lib/python3.10/site-packages/mrQA/cli.py", line 85, in main
    check_compliance(dataset=dataset,
  File "/home/u26/adamraikes/.conda/envs/qctools/lib/python3.10/site-packages/mrQA/project.py", line 63, in check_compliance
    raise DatasetEmptyException
MRdataset.config.DatasetEmptyException: Expected Sidecar DICOM/JSON files in --data_source. Got 0 DICOM/JSON files.

Here's the contents of that folder:

(qctools) [adamraikes@gpu68 app_apoe]$ ls /xdisk/adamraikes/app_apoe/dicoms/20230512_114500_apoemouse_APPCA_C1_VM6979_1_11/5/pdata/1/dicom
4_CIBS_MultishellDWI_EnIm1.dcm

Just as a sanity check:

(qctools) [adamraikes@gpu68 dicom]$ python
Python 3.10.12 | packaged by conda-forge | (main, Jun 23 2023, 22:40:32) [GCC 12.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from pydicom import dcmread
>>> ds = dcmread('4_CIBS_MultishellDWI_EnIm1.dcm')
>>> ds
Dataset.file_meta -------------------------------
(0002, 0000) File Meta Information Group Length  UL: 196
(0002, 0001) File Meta Information Version       OB: b'\x00\x01'
(0002, 0002) Media Storage SOP Class UID         UI: Enhanced MR Image Storage
(0002, 0003) Media Storage SOP Instance UID      UI: 2.16.756.5.5.200.8323328.195705.1683918037.311.3.0
(0002, 0010) Transfer Syntax UID                 UI: Explicit VR Little Endian
(0002, 0012) Implementation Class UID            UI: 1.2.276.0.7230010.3.0.3.6.6
(0002, 0013) Implementation Version Name         SH: 'OFFIS_DCMTK_366'

....
raamana commented 10 months ago

thanks a lot Adam for reporting this in detail - this seems like a clear bug on our part, and I will test it myself and get back to you shortly.

araikes commented 10 months ago

This is easier to share data if needed.

sinhaharsh commented 10 months ago

I think the log is very clear that the folder was skipped because it was identified as a phantom. 2023-10-20 08:12:29,049 - INFO - ACR/Phantom: /xdisk/adamraikes/app_apoe/dicoms/20230512_114500_apoemouse_APPCA_C1_VM6979_1_11/5/pdata/1/dicom We tested on human datasets, and we rely on certain dicom tags to identify them as phantoms. If those tags were not populated, it may misidentify DICOM as a phantom

araikes commented 10 months ago

More complete tag list (though not all):

Dataset.file_meta -------------------------------
(0002, 0000) File Meta Information Group Length  UL: 196
(0002, 0001) File Meta Information Version       OB: b'\x00\x01'
(0002, 0002) Media Storage SOP Class UID         UI: Enhanced MR Image Storage
(0002, 0003) Media Storage SOP Instance UID      UI: 2.16.756.5.5.200.8323328.195705.1683918037.311.3.0
(0002, 0010) Transfer Syntax UID                 UI: Explicit VR Little Endian
(0002, 0012) Implementation Class UID            UI: 1.2.276.0.7230010.3.0.3.6.6
(0002, 0013) Implementation Version Name         SH: 'OFFIS_DCMTK_366'
-------------------------------------------------
(0008, 0005) Specific Character Set              CS: 'ISO_IR 192'
(0008, 0008) Image Type                          CS: ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE']
(0008, 0012) Instance Creation Date              DA: '20230512'
(0008, 0013) Instance Creation Time              TM: '152313'
(0008, 0014) Instance Creator UID                UI: 2.16.756.5.5.1020.360.13.23.30
(0008, 0016) SOP Class UID                       UI: Enhanced MR Image Storage
(0008, 0018) SOP Instance UID                    UI: 2.16.756.5.5.200.8323328.195705.1683918037.311.3.0
(0008, 0020) Study Date                          DA: '20230512'
(0008, 0021) Series Date                         DA: '20230512'
(0008, 0023) Content Date                        DA: '20230512'
(0008, 002a) Acquisition DateTime                DT: '20230512121318.002-0700'
(0008, 0030) Study Time                          TM: '114500'
(0008, 0031) Series Time                         TM: '152313'
(0008, 0033) Content Time                        TM: '152313'
(0008, 0050) Accession Number                    SH: ''
(0008, 0060) Modality                            CS: 'MR'
(0008, 0070) Manufacturer                        LO: 'Bruker BioSpin MRI GmbH'
(0008, 0080) Institution Name                    LO: 'University of Arizona - Tucson'
(0008, 0090) Referring Physician's Name          PN: 'bhattrai'
(0008, 0201) Timezone Offset From UTC            SH: '-0700'
(0008, 103e) Series Description                  LO: '4_CIBS_MultishellDWI'
(0008, 1090) Manufacturer's Model Name           LO: 'BioSpec 70/20'
(0008, 9121)  Referenced Raw Data Sequence  1 item(s) ---- 
   (0008, 1115)  Referenced Series Sequence  1 item(s) ---- 
      (0008, 1199)  Referenced SOP Sequence  1 item(s) ---- 
         (0008, 1150) Referenced SOP Class UID            UI: Raw Data Storage
         (0008, 1155) Referenced SOP Instance UID         UI: 2.16.756.5.5.200.8323328.195705.1683917100.7.5
         ---------
      (0020, 000e) Series Instance UID                 UI: 2.16.756.5.5.200.8323328.195705.1683918037.311
      ---------
   (0020, 000d) Study Instance UID                  UI: 2.16.756.5.5.200.8323328.195705.1683917100.7
   ---------
(0008, 9205) Pixel Presentation                  CS: 'MONOCHROME'
(0008, 9206) Volumetric Properties               CS: 'VOLUME'
(0008, 9207) Volume Based Calculation Technique  CS: 'NONE'
(0008, 9208) Complex Image Component             CS: 'MAGNITUDE'
(0008, 9209) Acquisition Contrast                CS: 'DIFFUSION'
(0010, 0010) Patient's Name                      PN: 'apoemouse^^^^'
(0010, 0020) Patient ID                          LO: 'apoemouse'
(0010, 0030) Patient's Birth Date                DA: '20230403'
(0010, 0040) Patient's Sex                       CS: 'O'
(0010, 1030) Patient's Weight                    DS: '0.001'
(0010, 2201) Patient Species Description         LO: 'RODENT'
(0010, 2210) Anatomical Orientation Type         CS: 'QUADRUPED'
(0010, 2292) Patient Breed Description           LO: ''
(0010, 2293)  Patient Breed Code Sequence  0 item(s) ---- 
(0010, 2294)  Breed Registration Sequence  0 item(s) ---- 
(0010, 2297) Responsible Person                  PN: ''
(0010, 2299) Responsible Organization            LO: 'University of Arizona - Tucson'
(0018, 0023) MR Acquisition Type                 CS: '3D'
(0018, 0087) Magnetic Field Strength             DS: '7.05403738128'
(0018, 1000) Device Serial Number                LO: '406491'
(0018, 1020) Software Versions                   LO: ['Acquisition PV-360.3.3', 'ParaVision 360.3.3']
(0018, 1030) Protocol Name                       LO: '4_CIBS_MultishellDWI'
(0018, 5100) Patient Position                    CS: 'HFP'
(0018, 9004) Content Qualification               CS: 'PRODUCT'
(0018, 9005) Pulse Sequence Name                 SH: 'Bruker:DtiEpi'
(0018, 9008) Echo Pulse Sequence                 CS: 'BOTH'
(0018, 9011) Multiple Spin Echo                  CS: 'NO'
(0018, 9012) Multi-planar Excitation             CS: 'NO'
(0018, 9014) Phase Contrast                      CS: 'NO'
(0018, 9017) Steady State Pulse Sequence         CS: 'LONGITUDINAL'
(0018, 9018) Echo Planar Pulse Sequence          CS: 'YES'
(0018, 9024) Saturation Recovery                 CS: 'NO'
(0018, 9025) Spectrally Selected Suppression     CS: 'FAT'
(0018, 9029) Oversampling Phase                  CS: '3D'
(0018, 9032) Geometry of k-Space Traversal       CS: 'RECTILINEAR'
(0018, 9034) Rectilinear Phase Encode Reordering CS: 'LINEAR'
(0018, 9064) k-space Filtering                   CS: 'NONE'
(0018, 9073) Acquisition Duration                FD: 11392.0
(0018, 9093) Number of k-Space Trajectories      US: 1
(0018, 9094) Coverage of k-Space                 CS: 'FULL'
(0018, 9100) Resonant Nucleus                    CS: '1H'
(0018, 9174) Applicable Safety Standard Agency   CS: 'IEC'
(0020, 000d) Study Instance UID                  UI: 2.16.756.5.5.200.8323328.195705.1683917100.7
(0020, 000e) Series Instance UID                 UI: 2.16.756.5.5.200.8323328.195705.1683918037.311
(0020, 0010) Study ID                            SH: 'APPCA_C1_VM6979'
(0020, 0011) Series Number                       IS: '50001'
(0020, 0013) Instance Number                     IS: '1'
(0020, 0052) Frame of Reference UID              UI: 2.16.756.5.5.200.8323328.195705.1683917100.7
(0020, 1040) Position Reference Indicator        LO: ''
raamana commented 10 months ago

Hi @sinhaharsh , I think it is a bug on our part if we are doing "If those tags were not populated, it may misidentify DICOM as a phantom"

we should not filter out any image unless we are definitively sure its to be filtered (clear/direct evidence that it is phantom etc)