wsidicomizer


Namewsidicomizer JSON
Version 0.18.0 PyPI version JSON
download
home_pagehttps://github.com/imi-bigpicture/wsidicomizer
SummaryTool for reading WSI files from proprietary formats and optionally convert them to to DICOM
upload_time2025-02-18 17:31:16
maintainerNone
docs_urlNone
authorErik O Gabrielsson
requires_python<4.0,>=3.10
licenseApache-2.0
keywords whole slide image digital pathology dicom converter
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # *wsidicomizer*

*wsidicomizer* is a Python library for opening WSIs in proprietary formats and optionally convert them to DICOM. The aims of the project are:

- Provide read support for various proprietary formats.
- Provide lossless conversion for files supported by opentile.
- Provide 'as good as possible' conversion for other formats.
- Simplify the encoding of WSI metadata into DICOM.

## Supported formats

*wsidicomizer* currently supports the following formats:

- Aperio svs (lossless)
- Hamamatsu ndpi (lossless)
- Philips tiff (lossless)
- Zeiss czi (lossy)
- Optional: Formats supported by Bioformats (lossy)

With the `openslide` extra the following formats are also supported:

- Mirax mrxs (lossy)
- Leica scn (lossy)
- Sakura svslide (lossy)
- Trestle tif (lossy)
- Ventana bif, tif (lossy)
- Hamamatsu vms, vmu (lossy)

The `bioformats` extra by default enables lossy support for the [BSD-licensed Bioformat formats](https://docs.openmicroscopy.org/bio-formats/8.0.1/supported-formats.html).

The `isyntax` extra enables lossy single-thread support for isynax files.

For czi and isyntax only the base level is read from file. To produce a conversion with full levels, use `add_missing_levels` in the `save()` method.

## Installation

***Install wsidicomizer from pypi***

```console
pip install wsidicomizer
```

See [Openslide support](#openslide-support) and [Bioformats support](#bioformats-support) for how to install optional extras.

***Install libjpeg-turbo***
Install libjpeg-turbo either as binary from <https://libjpeg-turbo.org/> or using your package manager.
For Windows, you also need to add libjpeg-turbo's bin-folder to the environment variable 'Path'

## Important note

Please note that this is an early release and the API is not frozen yet. Function names and functionality is prone to change.

## Requirements

*wsidicomizer* requires python >=3.8 and uses numpy, pydicom, highdicom, imagecodecs, PyTurboJPEG, opentile, and wsidicom.

## Basic cli-usage

***Convert a wsi-file into DICOM using cli-interface***

```console
wsidicomizer -i 'path_to_wsi_file' -o 'path_to_output_folder'
```

### Arguments

~~~~
-i, --input, path to input wsi file
-o, --output, path to output folder
-t, --tile-size, required depending on input format
-m, --metadata, optional path to json file defining metadata
-d, --default-metadata, optional path to json file defining default metadata
-l, --levels, optional levels to include
-w, --workers, number of threads to use
--label, optional label image to use instead of label found in file
--no-label, if not to include label image
--no-overview, if not to include overview image
--no-confidential, if to not include confidential metadata
--chunk-size, number of tiles to give each worker at a time
--format, encoding format to use if re-encoding. 'jpeg' or 'jpeg2000'
--quality, quality to use if re-encoding.
--subsampling, subsampling option to use if re-encoding.
--offset-table, offset table to use, 'bot', 'eot', or 'None'
~~~~

### Flags

~~~~
--no-label, do not include label(s)
--no-overview, do not include overview(s)
--no-confidential, do not include confidential metadata from image
~~~~

Using the no-confidential-flag properties according to [DICOM Basic Confidentiality Profile](https://dicom.nema.org/medical/dicom/current/output/html/part15.html#table_E.1-1) are not included in the output file. Properties otherwise included are currently:

- Acquisition DateTime
- Device Serial Number

## Basic usage

***Create metadata (Optional)***

```python
from wsidicom.conceptcode import (
    AnatomicPathologySpecimenTypesCode,
    ContainerTypeCode,
    SpecimenCollectionProcedureCode,
    SpecimenEmbeddingMediaCode,
    SpecimenFixativesCode,
    SpecimenSamplingProcedureCode,
    SpecimenStainsCode,
)
from wsidicom.metadata import (
    Collection,
    Embedding,
    Equipment,
    Fixation,
    Label,
    Patient,
    Sample,
    Series,
    Slide,
    SlideSample,
    Specimen,
    Staining,
    Study,
)
from wsidicomizer.metadata import WsiDicomizerMetadata

study = Study(identifier="Study identifier")
series = Series(number=1)
patient = Patient(name="FamilyName^GivenName")
label = Label(text="Label text")
equipment = Equipment(
    manufacturer="Scanner manufacturer",
    model_name="Scanner model name",
    device_serial_number="Scanner serial number",
    software_versions=["Scanner software versions"],
)

specimen = Specimen(
    identifier="Specimen",
    extraction_step=Collection(method=SpecimenCollectionProcedureCode("Excision")),
    type=AnatomicPathologySpecimenTypesCode("Gross specimen"),
    container=ContainerTypeCode("Specimen container"),
    steps=[Fixation(fixative=SpecimenFixativesCode("Neutral Buffered Formalin"))],
)

block = Sample(
    identifier="Block",
    sampled_from=[specimen.sample(method=SpecimenSamplingProcedureCode("Dissection"))],
    type=AnatomicPathologySpecimenTypesCode("tissue specimen"),
    container=ContainerTypeCode("Tissue cassette"),
    steps=[Embedding(medium=SpecimenEmbeddingMediaCode("Paraffin wax"))],
)

slide_sample = SlideSample(
    identifier="Slide sample",
    sampled_from=block.sample(method=SpecimenSamplingProcedureCode("Block sectioning")),
)

slide = Slide(
    identifier="Slide",
    stainings=[
        Staining(
            substances=[
                SpecimenStainsCode("hematoxylin stain"),
                SpecimenStainsCode("water soluble eosin stain"),
            ]
        )
    ],
    samples=[slide_sample],
)
metadata = WsiDicomizerMetadata(
    study=study,
    series=series,
    patient=patient,
    equipment=equipment,
    slide=slide,
    label=label,
)
```

***Convert a wsi-file into DICOM using python-interface***

```python
from wsidicomizer import WsiDicomizer
created_files = WsiDicomizer.convert(
    filepath=path_to_wsi_file,
    output_path=path_to_output_folder,
    metadata=metadata,
    tile_size=tile_size
)
```

***Import a wsi file as a WsiDicom object.***

```python
from wsidicomizer import WsiDicomizer
wsi = WsiDicomizer.open(path_to_wsi_file)
region = wsi.read_region((1000, 1000), 6, (200, 200))
wsi.close()
```

## Metadata handling

The `open()` and `convert()` methods of `WsiDicomizer` takes three parameters that are important for inserting additional metadata into the DICOM dataset of the converted image:

- `metadata`
- `default_metadata`
- `metadata_post_processor`

### Metadata merging

When creating the DICOM dataset, the metadata provided in the `metadata` and `default_metadata` parameters are merged with metadata that is parsed from the source image file, with the following descending preference:

1. Metadata from the `metadata` parameter
2. Metadata from the source image
3. Metadata from the `default_metadata` parameter

For example:

- `equipment` in the `metadata`-parameter metadata will override the `equipment` metadata from the source image (if present).
- `optical_paths` in the `default_metadata`-parameter metadata will be overriden by any `optical_paths` present in the `metadata` parameter metadata or source image metadata.

Note that merging is also performed on nested metadata, e.g. `focus_method` in an `Image` can be merged from the different sources.

### Metadata post processing

After the metadata merge a pydicom `Dataset` is created from the result. Additional post processing can be performed using the `metadata_post_processor` parameter. This can be another `Dataset`, in which case the merged dataset is updated with (i.e. overwritten by) the provided dataset:

```python
from pydicom import Dataset

dataset = Dataset()
dataset.PatientAge = "042Y"

WsiDicomizer.convert(
    filepath=path_to_wsi_file,
    output_path=path_to_output_folder,
    metadata_post_processor=dataset
)
```

For more complex processing a callback function that takes the merged `Dataset` and `WsiMetadata` as parameters and returns an updated `Dataset` can be used:

```python
from pydicom import Dataset
from wsidicom.metadata import WsiMetadata

def metadata_post_processor(dataset: Dataset, metadata: WsiMetadata) -> Dataset:
    dataset.PatientAge = "042Y"
    return dataset

WsiDicomizer.convert(
    filepath=path_to_wsi_file,
    output_path=path_to_output_folder,
    metadata_post_processor=metadata_post_processor
)
```

### JSON metadata

WsiDicom provides methods for serializing and deserialising metadata to and from JSON. This is useful for example for providing metadata when performing conversion using the cli. As there is not yet any documentation on the JSON schema, the simplest way to produce metadata in the JSON-format is to first construct it in Python and then calling the provided serializer:

```python
import json
from wsidicom.metadata.schema.json import WsiMetadataJsonSchema
metadata = WsiDicomizerMetadata(
    study=study,
    series=series,
    patient=patient,
    equipment=equipment,
    slide=slide,
    label=label,
)
with open('metadata.json', 'w') as f:
    json.dump(WsiMetadataJsonSchema().dump(metadata), f, indent=4)
```

## Openslide support

### Installation

Support for reading images using Openslide c library can optionally be enabled by installing *wsidicomizer* with the `openslide` extra:

```console
pip install wsidicomizer[openslide]
```

The OpenSlide extra requires the OpenSlide library to be installed separately. This can be done through pip:

```sh
pip install openslide-bin
```

Alternative instructions for how to install OpenSlide is available on <https://openslide.org/download/>

## Bioformats support

### Installation

Support for reading images using Bioformats java library can optionally be enabled by installing *wsidicomizer* with the `bioformats` extra:

```console
pip install wsidicomizer[bioformats]
```

The `bioformats` extra enables usage of the `bioformats` module and the `bioformats_wsidicomizer`-cli command. The required Bioformats java library (jar-file) is downloaded automatically when the module is imported using [scyjava](https://github.com/scijava/scyjava).

### Using

As the Bioformats library is a java library it needs to run in a java virtual machine (JVM). A JVM is started automatically when the `bioformats` module is imported. The JVM can´t be restarted in the same Python inteprenter, and is therefore left running once started. If you want to shutdown the JVM (without closing the Python inteprenter) you can call the shutdown_jvm()-method:

```python
import scyjava
scyjava.shutdown_jvm()
```

Due to the need to start a JVM, the `bioformats` module is not imported when using the default `WsiDicomzer`-class, instead the `BioformatsDicomizer`-class should be used. Similarly, the Bioformats support is only available in the `bioformats_wsidicomizer`-cli command.

### Bioformats version

The Bioformats java library is available in two versions, one with BSD and one with GPL2 license, and can read several [WSI formats](https://bio-formats.readthedocs.io/en/v8.0.1/supported-formats.html). However, most formats are only available in the GPL2 version. Due to the licensing incompatibility between Apache 2.0 and GPL2, *wsidicomizer* is distributed with a default setting of using the BSD licensed library. The loaded Biformats version can be changed by the user by setting the `BIOFORMATS_VERSION` environmental variable from the default value `bsd:8.0.1`.

## Limitations

Files with z-stacks or multiple focal paths are currently not supported.

## Other DICOM python tools

- [pydicom](https://pydicom.github.io/)
- [highdicom](https://github.com/MGHComputationalPathology/highdicom)
- [wsidicom](https://github.com/imi-bigpicture/wsidicom)

## Contributing

We welcome any contributions to help improve this tool for the WSI DICOM community!

We recommend first creating an issue before creating potential contributions to check that the contribution is in line with the goals of the project. To submit your contribution, please issue a pull request on the imi-bigpicture/wsidicomizer repository with your changes for review.

Our aim is to provide constructive and positive code reviews for all submissions. The project relies on gradual typing and roughly follows PEP8. However, we are not dogmatic. Most important is that the code is easy to read and understand.

## Acknowledgement

*wsidicomizer*: Copyright 2021 Sectra AB, licensed under Apache 2.0.

This project is part of a project that has received funding from the Innovative Medicines Initiative 2 Joint Undertaking under grant agreement No 945358. This Joint Undertaking receives support from the European Union’s Horizon 2020 research and innovation programme and EFPIA. IMI website: <www.imi.europa.eu>

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/imi-bigpicture/wsidicomizer",
    "name": "wsidicomizer",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.10",
    "maintainer_email": null,
    "keywords": "whole slide image, digital pathology, dicom, converter",
    "author": "Erik O Gabrielsson",
    "author_email": "erik.o.gabrielsson@sectra.com",
    "download_url": "https://files.pythonhosted.org/packages/46/16/c755efe9d8c38784ab0bd0e354d40108724428d928c5d43229ae55a97c53/wsidicomizer-0.18.0.tar.gz",
    "platform": null,
    "description": "# *wsidicomizer*\n\n*wsidicomizer* is a Python library for opening WSIs in proprietary formats and optionally convert them to DICOM. The aims of the project are:\n\n- Provide read support for various proprietary formats.\n- Provide lossless conversion for files supported by opentile.\n- Provide 'as good as possible' conversion for other formats.\n- Simplify the encoding of WSI metadata into DICOM.\n\n## Supported formats\n\n*wsidicomizer* currently supports the following formats:\n\n- Aperio svs (lossless)\n- Hamamatsu ndpi (lossless)\n- Philips tiff (lossless)\n- Zeiss czi (lossy)\n- Optional: Formats supported by Bioformats (lossy)\n\nWith the `openslide` extra the following formats are also supported:\n\n- Mirax mrxs (lossy)\n- Leica scn (lossy)\n- Sakura svslide (lossy)\n- Trestle tif (lossy)\n- Ventana bif, tif (lossy)\n- Hamamatsu vms, vmu (lossy)\n\nThe `bioformats` extra by default enables lossy support for the [BSD-licensed Bioformat formats](https://docs.openmicroscopy.org/bio-formats/8.0.1/supported-formats.html).\n\nThe `isyntax` extra enables lossy single-thread support for isynax files.\n\nFor czi and isyntax only the base level is read from file. To produce a conversion with full levels, use `add_missing_levels` in the `save()` method.\n\n## Installation\n\n***Install wsidicomizer from pypi***\n\n```console\npip install wsidicomizer\n```\n\nSee [Openslide support](#openslide-support) and [Bioformats support](#bioformats-support) for how to install optional extras.\n\n***Install libjpeg-turbo***\nInstall libjpeg-turbo either as binary from <https://libjpeg-turbo.org/> or using your package manager.\nFor Windows, you also need to add libjpeg-turbo's bin-folder to the environment variable 'Path'\n\n## Important note\n\nPlease note that this is an early release and the API is not frozen yet. Function names and functionality is prone to change.\n\n## Requirements\n\n*wsidicomizer* requires python >=3.8 and uses numpy, pydicom, highdicom, imagecodecs, PyTurboJPEG, opentile, and wsidicom.\n\n## Basic cli-usage\n\n***Convert a wsi-file into DICOM using cli-interface***\n\n```console\nwsidicomizer -i 'path_to_wsi_file' -o 'path_to_output_folder'\n```\n\n### Arguments\n\n~~~~\n-i, --input, path to input wsi file\n-o, --output, path to output folder\n-t, --tile-size, required depending on input format\n-m, --metadata, optional path to json file defining metadata\n-d, --default-metadata, optional path to json file defining default metadata\n-l, --levels, optional levels to include\n-w, --workers, number of threads to use\n--label, optional label image to use instead of label found in file\n--no-label, if not to include label image\n--no-overview, if not to include overview image\n--no-confidential, if to not include confidential metadata\n--chunk-size, number of tiles to give each worker at a time\n--format, encoding format to use if re-encoding. 'jpeg' or 'jpeg2000'\n--quality, quality to use if re-encoding.\n--subsampling, subsampling option to use if re-encoding.\n--offset-table, offset table to use, 'bot', 'eot', or 'None'\n~~~~\n\n### Flags\n\n~~~~\n--no-label, do not include label(s)\n--no-overview, do not include overview(s)\n--no-confidential, do not include confidential metadata from image\n~~~~\n\nUsing the no-confidential-flag properties according to [DICOM Basic Confidentiality Profile](https://dicom.nema.org/medical/dicom/current/output/html/part15.html#table_E.1-1) are not included in the output file. Properties otherwise included are currently:\n\n- Acquisition DateTime\n- Device Serial Number\n\n## Basic usage\n\n***Create metadata (Optional)***\n\n```python\nfrom wsidicom.conceptcode import (\n    AnatomicPathologySpecimenTypesCode,\n    ContainerTypeCode,\n    SpecimenCollectionProcedureCode,\n    SpecimenEmbeddingMediaCode,\n    SpecimenFixativesCode,\n    SpecimenSamplingProcedureCode,\n    SpecimenStainsCode,\n)\nfrom wsidicom.metadata import (\n    Collection,\n    Embedding,\n    Equipment,\n    Fixation,\n    Label,\n    Patient,\n    Sample,\n    Series,\n    Slide,\n    SlideSample,\n    Specimen,\n    Staining,\n    Study,\n)\nfrom wsidicomizer.metadata import WsiDicomizerMetadata\n\nstudy = Study(identifier=\"Study identifier\")\nseries = Series(number=1)\npatient = Patient(name=\"FamilyName^GivenName\")\nlabel = Label(text=\"Label text\")\nequipment = Equipment(\n    manufacturer=\"Scanner manufacturer\",\n    model_name=\"Scanner model name\",\n    device_serial_number=\"Scanner serial number\",\n    software_versions=[\"Scanner software versions\"],\n)\n\nspecimen = Specimen(\n    identifier=\"Specimen\",\n    extraction_step=Collection(method=SpecimenCollectionProcedureCode(\"Excision\")),\n    type=AnatomicPathologySpecimenTypesCode(\"Gross specimen\"),\n    container=ContainerTypeCode(\"Specimen container\"),\n    steps=[Fixation(fixative=SpecimenFixativesCode(\"Neutral Buffered Formalin\"))],\n)\n\nblock = Sample(\n    identifier=\"Block\",\n    sampled_from=[specimen.sample(method=SpecimenSamplingProcedureCode(\"Dissection\"))],\n    type=AnatomicPathologySpecimenTypesCode(\"tissue specimen\"),\n    container=ContainerTypeCode(\"Tissue cassette\"),\n    steps=[Embedding(medium=SpecimenEmbeddingMediaCode(\"Paraffin wax\"))],\n)\n\nslide_sample = SlideSample(\n    identifier=\"Slide sample\",\n    sampled_from=block.sample(method=SpecimenSamplingProcedureCode(\"Block sectioning\")),\n)\n\nslide = Slide(\n    identifier=\"Slide\",\n    stainings=[\n        Staining(\n            substances=[\n                SpecimenStainsCode(\"hematoxylin stain\"),\n                SpecimenStainsCode(\"water soluble eosin stain\"),\n            ]\n        )\n    ],\n    samples=[slide_sample],\n)\nmetadata = WsiDicomizerMetadata(\n    study=study,\n    series=series,\n    patient=patient,\n    equipment=equipment,\n    slide=slide,\n    label=label,\n)\n```\n\n***Convert a wsi-file into DICOM using python-interface***\n\n```python\nfrom wsidicomizer import WsiDicomizer\ncreated_files = WsiDicomizer.convert(\n    filepath=path_to_wsi_file,\n    output_path=path_to_output_folder,\n    metadata=metadata,\n    tile_size=tile_size\n)\n```\n\n***Import a wsi file as a WsiDicom object.***\n\n```python\nfrom wsidicomizer import WsiDicomizer\nwsi = WsiDicomizer.open(path_to_wsi_file)\nregion = wsi.read_region((1000, 1000), 6, (200, 200))\nwsi.close()\n```\n\n## Metadata handling\n\nThe `open()` and `convert()` methods of `WsiDicomizer` takes three parameters that are important for inserting additional metadata into the DICOM dataset of the converted image:\n\n- `metadata`\n- `default_metadata`\n- `metadata_post_processor`\n\n### Metadata merging\n\nWhen creating the DICOM dataset, the metadata provided in the `metadata` and `default_metadata` parameters are merged with metadata that is parsed from the source image file, with the following descending preference:\n\n1. Metadata from the `metadata` parameter\n2. Metadata from the source image\n3. Metadata from the `default_metadata` parameter\n\nFor example:\n\n- `equipment` in the `metadata`-parameter metadata will override the `equipment` metadata from the source image (if present).\n- `optical_paths` in the `default_metadata`-parameter metadata will be overriden by any `optical_paths` present in the `metadata` parameter metadata or source image metadata.\n\nNote that merging is also performed on nested metadata, e.g. `focus_method` in an `Image` can be merged from the different sources.\n\n### Metadata post processing\n\nAfter the metadata merge a pydicom `Dataset` is created from the result. Additional post processing can be performed using the `metadata_post_processor` parameter. This can be another `Dataset`, in which case the merged dataset is updated with (i.e. overwritten by) the provided dataset:\n\n```python\nfrom pydicom import Dataset\n\ndataset = Dataset()\ndataset.PatientAge = \"042Y\"\n\nWsiDicomizer.convert(\n    filepath=path_to_wsi_file,\n    output_path=path_to_output_folder,\n    metadata_post_processor=dataset\n)\n```\n\nFor more complex processing a callback function that takes the merged `Dataset` and `WsiMetadata` as parameters and returns an updated `Dataset` can be used:\n\n```python\nfrom pydicom import Dataset\nfrom wsidicom.metadata import WsiMetadata\n\ndef metadata_post_processor(dataset: Dataset, metadata: WsiMetadata) -> Dataset:\n    dataset.PatientAge = \"042Y\"\n    return dataset\n\nWsiDicomizer.convert(\n    filepath=path_to_wsi_file,\n    output_path=path_to_output_folder,\n    metadata_post_processor=metadata_post_processor\n)\n```\n\n### JSON metadata\n\nWsiDicom provides methods for serializing and deserialising metadata to and from JSON. This is useful for example for providing metadata when performing conversion using the cli. As there is not yet any documentation on the JSON schema, the simplest way to produce metadata in the JSON-format is to first construct it in Python and then calling the provided serializer:\n\n```python\nimport json\nfrom wsidicom.metadata.schema.json import WsiMetadataJsonSchema\nmetadata = WsiDicomizerMetadata(\n    study=study,\n    series=series,\n    patient=patient,\n    equipment=equipment,\n    slide=slide,\n    label=label,\n)\nwith open('metadata.json', 'w') as f:\n    json.dump(WsiMetadataJsonSchema().dump(metadata), f, indent=4)\n```\n\n## Openslide support\n\n### Installation\n\nSupport for reading images using Openslide c library can optionally be enabled by installing *wsidicomizer* with the `openslide` extra:\n\n```console\npip install wsidicomizer[openslide]\n```\n\nThe OpenSlide extra requires the OpenSlide library to be installed separately. This can be done through pip:\n\n```sh\npip install openslide-bin\n```\n\nAlternative instructions for how to install OpenSlide is available on <https://openslide.org/download/>\n\n## Bioformats support\n\n### Installation\n\nSupport for reading images using Bioformats java library can optionally be enabled by installing *wsidicomizer* with the `bioformats` extra:\n\n```console\npip install wsidicomizer[bioformats]\n```\n\nThe `bioformats` extra enables usage of the `bioformats` module and the `bioformats_wsidicomizer`-cli command. The required Bioformats java library (jar-file) is downloaded automatically when the module is imported using [scyjava](https://github.com/scijava/scyjava).\n\n### Using\n\nAs the Bioformats library is a java library it needs to run in a java virtual machine (JVM). A JVM is started automatically when the `bioformats` module is imported. The JVM can\u00b4t be restarted in the same Python inteprenter, and is therefore left running once started. If you want to shutdown the JVM (without closing the Python inteprenter) you can call the shutdown_jvm()-method:\n\n```python\nimport scyjava\nscyjava.shutdown_jvm()\n```\n\nDue to the need to start a JVM, the `bioformats` module is not imported when using the default `WsiDicomzer`-class, instead the `BioformatsDicomizer`-class should be used. Similarly, the Bioformats support is only available in the `bioformats_wsidicomizer`-cli command.\n\n### Bioformats version\n\nThe Bioformats java library is available in two versions, one with BSD and one with GPL2 license, and can read several [WSI formats](https://bio-formats.readthedocs.io/en/v8.0.1/supported-formats.html). However, most formats are only available in the GPL2 version. Due to the licensing incompatibility between Apache 2.0 and GPL2, *wsidicomizer* is distributed with a default setting of using the BSD licensed library. The loaded Biformats version can be changed by the user by setting the `BIOFORMATS_VERSION` environmental variable from the default value `bsd:8.0.1`.\n\n## Limitations\n\nFiles with z-stacks or multiple focal paths are currently not supported.\n\n## Other DICOM python tools\n\n- [pydicom](https://pydicom.github.io/)\n- [highdicom](https://github.com/MGHComputationalPathology/highdicom)\n- [wsidicom](https://github.com/imi-bigpicture/wsidicom)\n\n## Contributing\n\nWe welcome any contributions to help improve this tool for the WSI DICOM community!\n\nWe recommend first creating an issue before creating potential contributions to check that the contribution is in line with the goals of the project. To submit your contribution, please issue a pull request on the imi-bigpicture/wsidicomizer repository with your changes for review.\n\nOur aim is to provide constructive and positive code reviews for all submissions. The project relies on gradual typing and roughly follows PEP8. However, we are not dogmatic. Most important is that the code is easy to read and understand.\n\n## Acknowledgement\n\n*wsidicomizer*: Copyright 2021 Sectra AB, licensed under Apache 2.0.\n\nThis project is part of a project that has received funding from the Innovative Medicines Initiative 2 Joint Undertaking under grant agreement No 945358. This Joint Undertaking receives support from the European Union\u2019s Horizon 2020 research and innovation programme and EFPIA. IMI website: <www.imi.europa.eu>\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "Tool for reading WSI files from proprietary formats and optionally convert them to to DICOM",
    "version": "0.18.0",
    "project_urls": {
        "Homepage": "https://github.com/imi-bigpicture/wsidicomizer",
        "Repository": "https://github.com/imi-bigpicture/wsidicomizer"
    },
    "split_keywords": [
        "whole slide image",
        " digital pathology",
        " dicom",
        " converter"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c03a55410f9641a3072ec3dcff9b6f114bc88a4b0d2d71977095513a0b9c4bd6",
                "md5": "7538c5b4f3a79fbecbb5e86e596bc1d5",
                "sha256": "aaf7ee6af9b73b0d09ea1329b2536201eb9b4cfbca61ab040044655b6cd98d34"
            },
            "downloads": -1,
            "filename": "wsidicomizer-0.18.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "7538c5b4f3a79fbecbb5e86e596bc1d5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.10",
            "size": 67667,
            "upload_time": "2025-02-18T17:31:14",
            "upload_time_iso_8601": "2025-02-18T17:31:14.831019Z",
            "url": "https://files.pythonhosted.org/packages/c0/3a/55410f9641a3072ec3dcff9b6f114bc88a4b0d2d71977095513a0b9c4bd6/wsidicomizer-0.18.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4616c755efe9d8c38784ab0bd0e354d40108724428d928c5d43229ae55a97c53",
                "md5": "945e0bc334d6e13e06f4655b7a293d5a",
                "sha256": "6addb18302f4c3eb2c90fbc6464e24dab9234cfa44a03d4b895109a8e74d0f08"
            },
            "downloads": -1,
            "filename": "wsidicomizer-0.18.0.tar.gz",
            "has_sig": false,
            "md5_digest": "945e0bc334d6e13e06f4655b7a293d5a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.10",
            "size": 43447,
            "upload_time": "2025-02-18T17:31:16",
            "upload_time_iso_8601": "2025-02-18T17:31:16.105725Z",
            "url": "https://files.pythonhosted.org/packages/46/16/c755efe9d8c38784ab0bd0e354d40108724428d928c5d43229ae55a97c53/wsidicomizer-0.18.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-18 17:31:16",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "imi-bigpicture",
    "github_project": "wsidicomizer",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "wsidicomizer"
}
        
Elapsed time: 0.46658s