Skip to content

Commit

Permalink
These changes allow us to view data from IDC
Browse files Browse the repository at this point in the history
After I made these changes, I could view a dataset using our viewer.

For example:

```python
from wsidicom import WsiDicom, WsiDicomWebClient

url = 'https://proxy.imaging.datacommons.cancer.gov/current/viewer-only-no-downloads-see-tinyurl-dot-com-slash-3j3d9jyp/dicomWeb'
study_uid = '2.25.25644321580420796312527343668921514374'
series_uid = '1.3.6.1.4.1.5962.99.1.3205815762.381594633.1639588388306.2.0'

client = WsiDicomWebClient.create_client(url)
slide = WsiDicom.open_web(client, study_uid, series_uid)
```

I had to comment out the use of `AvailableTransferSyntaxUID` and `SOPClassUID`
because they were producing these errors, respectively:

```bash
"invalid QIDO-RS query: unknown/unsupported QIDO attribute: AvailableTransferSyntaxUID"
"generic::invalid_argument: SOPClassUID is not a supported instance or series level attribute"
```

I had to comment out the annotation parts because I was getting this error:
```python
Traceback (most recent call last):
  File "/opt/large_image/sources/dicom/large_image_source_dicom/__init__.py", line 152, in __init__
    self._dicom = self._open_wsi_dicom(self._largeImagePath)
  File "/opt/large_image/sources/dicom/large_image_source_dicom/__init__.py", line 183, in _open_wsi_dicom
    return self._open_wsi_dicomweb(path)
  File "/opt/large_image/sources/dicom/large_image_source_dicom/__init__.py", line 209, in _open_wsi_dicomweb
    return wsidicom.WsiDicom.open_web(wsidicom_client, study_uid, series_uid)
  File "/opt/wsidicom/wsidicom/wsidicom.py", line 153, in open_web
    source = WsiDicomWebSource(
  File "/opt/wsidicom/wsidicom/web/wsidicom_web_source.py", line 146, in __init__
    AnnotationInstance.open_dataset(annotation_instance)
  File "/opt/wsidicom/wsidicom/graphical_annotations.py", line 1653, in open_dataset
    if dataset.AnnotationCoordinateType == "2D":
  File "/opt/venv/lib/python3.9/site-packages/pydicom/dataset.py", line 908, in __getattr__
    return object.__getattribute__(self, name)
AttributeError: 'Dataset' object has no attribute 'AnnotationCoordinateType'
```

See imi-bigpicture#141

Signed-off-by: Patrick Avery <[email protected]>
  • Loading branch information
psavery committed Jan 12, 2024
1 parent f5c5312 commit 9252965
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 13 deletions.
6 changes: 3 additions & 3 deletions wsidicom/web/wsidicom_web_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -253,16 +253,16 @@ def _get_intances(
for instance in self._client.search_for_instances(
study_uid,
series_uid,
search_filters={SOP_CLASS_UID: sop_class_uid},
# search_filters={SOP_CLASS_UID: sop_class_uid},
)
)
return (
self._get_uids_from_response(instance)
for instance in self._client.search_for_instances(
study_uid,
fields=["AvailableTransferSyntaxUID"],
fields=[], #"AvailableTransferSyntaxUID"],
search_filters={
SOP_CLASS_UID: sop_class_uid,
# SOP_CLASS_UID: sop_class_uid,
SERIES_INSTANCE_UID: series_uids,
},
)
Expand Down
20 changes: 10 additions & 10 deletions wsidicom/web/wsidicom_web_source.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,12 +123,12 @@ def create_instance(
study_uid, series_uids
)
)
annotation_instances = (
client.get_instance(study_uid, series_uid, instance_uid)
for series_uid, instance_uid, _ in client.get_annotation_instances(
study_uid, series_uids
)
)
# annotation_instances = (
# client.get_instance(study_uid, series_uid, instance_uid)
# for series_uid, instance_uid, _ in client.get_annotation_instances(
# study_uid, series_uids
# )
# )

with ConditionalThreadPoolExecutor(settings.open_web_theads) as pool:
instances = pool.map(create_instance, instance_uids)
Expand All @@ -141,10 +141,10 @@ def create_instance(
self._label_instances.append(instance)
elif instance.image_type == ImageType.OVERVIEW:
self._overview_instances.append(instance)
for annotation_instance in annotation_instances:
self._annotation_instances.append(
AnnotationInstance.open_dataset(annotation_instance)
)
# for annotation_instance in annotation_instances:
# self._annotation_instances.append(
# AnnotationInstance.open_dataset(annotation_instance)
# )

try:
self._base_dataset = next(
Expand Down

0 comments on commit 9252965

Please sign in to comment.