{"library":"pydicom","title":"pydicom","description":"pydicom is a pure Python package for working with DICOM files, the standard for medical imaging and related information. It facilitates reading, modifying, and writing DICOM data into natural pythonic structures. The current version is 3.0.2, and it maintains an active development cycle with several releases per year, including major versions that introduce breaking changes.","language":"python","status":"active","last_verified":"Thu May 14","install":{"commands":["pip install pydicom"],"cli":null},"imports":["import pydicom","from pydicom import dcmread","from pydicom.dataset import Dataset"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nimport pydicom\nfrom pydicom.data import get_testdata_files\n\n# Create a dummy DICOM file for demonstration if it doesn't exist\n# In a real scenario, you would read an existing .dcm file.\ntry:\n    # Using a test file provided by pydicom\n    filename = get_testdata_files(\"CT_small.dcm\")[0]\n    ds = pydicom.dcmread(filename)\n    print(f\"Successfully read: {filename}\")\nexcept Exception as e:\n    print(f\"Could not read test file: {e}. Creating a minimal dataset.\")\n    # Create a dummy dataset if test files are unavailable or for new creation\n    from pydicom.dataset import Dataset, FileDataset, FileMetaDataset\n    from pydicom.uid import generate_uid\n\n    file_meta = FileMetaDataset()\n    file_meta.MediaStorageSOPClassUID = '1.2.840.10008.5.1.4.1.1.2' # CT Image Storage\n    file_meta.MediaStorageSOPInstanceUID = generate_uid()\n    file_meta.ImplementationClassUID = generate_uid()\n\n    ds = FileDataset(\"dummy.dcm\", {}, file_meta=file_meta, preamble=b\"\\0\" * 128)\n    ds.PatientName = \"Doe^John\"\n    ds.PatientID = \"123456\"\n    ds.Modality = \"CT\"\n    ds.StudyInstanceUID = generate_uid()\n    ds.SeriesInstanceUID = generate_uid()\n    ds.SOPInstanceUID = file_meta.MediaStorageSOPInstanceUID\n    ds.SOPClassUID = file_meta.MediaStorageSOPClassUID\n    ds.BodyPartExamined = \"CHEST\"\n    ds.Rows = 128\n    ds.Columns = 128\n    ds.BitsAllocated = 16\n    ds.BitsStored = 12\n    ds.HighBit = 11\n    ds.PixelRepresentation = 0 # unsigned\n    ds.PhotometricInterpretation = \"MONOCHROME2\"\n    ds.SamplesPerPixel = 1\n    ds.PixelData = b'\\x00\\x00' * ds.Rows * ds.Columns # Dummy pixel data\n    ds.is_little_endian = True\n    ds.is_implicit_VR = False\n    ds.save_as(\"dummy.dcm\")\n    filename = \"dummy.dcm\"\n    ds = pydicom.dcmread(filename)\n\n# Accessing DICOM elements\nprint(f\"Patient Name: {ds.PatientName}\")\nprint(f\"Modality: {ds.Modality}\")\n\n# Modifying DICOM elements\nds.PatientName = \"Smith^Jane\"\nprint(f\"New Patient Name: {ds.PatientName}\")\n\n# Adding new elements (if not present in the dictionary, define VR first)\nif 'PhysicianOfRecord' not in ds:\n    ds.add_new('00080090', 'PN', 'Dr. Who') # Tag, VR, Value\nelse:\n    ds.PhysicianOfRecord = 'Dr. New'\nprint(f\"Physician Of Record: {ds.PhysicianOfRecord}\")\n\n# Saving the modified dataset to a new file\noutput_filename = \"modified_image.dcm\"\nds.save_as(output_filename)\nprint(f\"Modified DICOM saved to: {output_filename}\")\n\n# Accessing pixel data (requires numpy)\nif 'PixelData' in ds and 'numpy' in globals():\n    try:\n        pixel_array = ds.pixel_array\n        print(f\"Pixel data shape: {pixel_array.shape}\")\n    except Exception as e:\n        print(f\"Could not access pixel_array: {e}. Is numpy installed?\")\n\n# Clean up (optional)\n# os.remove(output_filename)\n# if filename == \"dummy.dcm\":\n#     os.remove(filename)","lang":"python","description":"This quickstart demonstrates how to read a DICOM file (either a test file or a minimal dummy file), access and modify its metadata elements, and save the changes to a new file. It also shows how to access the pixel data as a NumPy array if available. The example handles the creation of a minimal DICOM file if no test data is readily accessible.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-14","installed_version":"2.4.4","pypi_latest":"3.0.2","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.3,"avg_import_s":0.73,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pydicom","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.72,"mem_mb":12.9,"disk_size":"38.2M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pydicom","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.88,"mem_mb":12.9,"disk_size":"38.2M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pydicom","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.3,"import_time_s":0.67,"mem_mb":12.9,"disk_size":"39M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pydicom","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.85,"mem_mb":12.9,"disk_size":"39M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pydicom","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.86,"mem_mb":12.7,"disk_size":"34.1M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pydicom","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.33,"mem_mb":12.7,"disk_size":"34.1M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pydicom","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.3,"import_time_s":0.76,"mem_mb":12.7,"disk_size":"35M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pydicom","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.85,"mem_mb":12.7,"disk_size":"35M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pydicom","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.67,"mem_mb":12.3,"disk_size":"25.8M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pydicom","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.91,"mem_mb":12.3,"disk_size":"25.8M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pydicom","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.2,"import_time_s":0.73,"mem_mb":12.3,"disk_size":"26M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pydicom","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.95,"mem_mb":12.3,"disk_size":"26M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pydicom","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.63,"mem_mb":12.2,"disk_size":"25.5M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pydicom","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.05,"mem_mb":12.2,"disk_size":"25.4M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pydicom","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.3,"import_time_s":0.66,"mem_mb":12.2,"disk_size":"26M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pydicom","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.81,"mem_mb":12.2,"disk_size":"26M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pydicom","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.28,"mem_mb":10.9,"disk_size":"28.8M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pydicom","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.38,"mem_mb":10.9,"disk_size":"28.8M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pydicom","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.6,"import_time_s":0.27,"mem_mb":10.9,"disk_size":"29M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pydicom","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.43,"mem_mb":10.9,"disk_size":"29M"}]}}