# How to use Python to add header content

**URL:** <https://discourse.slicer.org/t/how-to-use-python-to-add-header-content/32573>\
**Category:** Support\
**Tags:** segmentation\
**Created:** [November 3, 2023, 7:40am UTC](https://discourse.slicer.org/t/how-to-use-python-to-add-header-content/32573 "2023-11-03T07:40:05Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![sun-wanqing](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/sun-wanqing/32/67673_2.png) [@sun-wanqing](https://discourse.slicer.org/u/sun-wanqing)\
**Post date:** [November 3, 2023, 7:40am UTC](https://discourse.slicer.org/t/how-to-use-python-to-add-header-content/32573/1 "2023-11-03T07:40:05Z")

</div>

I want to batch import matrices into nrrd. I added a new keys to the header, but it still cannot work.

```auto
        mhd_path = path + f'\{name}\Segmentation_1_T1_lumen.mhd'
        sitk_image = sitk.ReadImage(mhd_path)
        mask = sitk.GetArrayFromImage((sitk_image))
        mask = np.transpose(mask, (2, 1, 0))

        input_filename = path + f'\{name}\Segmentation_english.seg.nrrd'
        output_filename = path + f'\{name}\Segmentation_new.seg.nrrd'

        voxels, header = nrrd.read(input_filename)
        print(voxels.shape,mask.shape)
        new_voxels = np.concatenate((mask[np.newaxis, :, :, :], voxels), axis=0)
        
        
        header["Segment9_Color"] = "0.694118 0.478431 0.396078"
        header["Segment9_ColorAutoGenerated"] = "1"
        header["Segment9_Extent"] = "125 303 176 216 52 81"
        header["Segment9_ID"] = "Segment_9"
        header["Segment9_LabelValue"] = "1"
        header["Segment9_Layer"] = "2"
        header["Segment9_Name"] = "lumen"
        header["Segment9_NameAutoGenerated"] = "0"
        header["Segment9_Tags"] = header["Segment1_Tags"]
        print(new_voxels.shape)
        print(header.keys())
        # print(header)
        
        nrrd.write(output_filename, new_voxels, header)

```

---

<div class="post-metadata">

**Author:** ![sun-wanqing](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/sun-wanqing/32/67673_2.png) [@sun-wanqing](https://discourse.slicer.org/u/sun-wanqing)\
**Post date:** [November 6, 2023, 1:50am UTC](https://discourse.slicer.org/t/how-to-use-python-to-add-header-content/32573/2 "2023-11-06T01:50:47Z")

</div>

```
    voxels, header = nrrd.read(input_filename)
    print(voxels.shape,mask.shape)
    new_voxels = np.concatenate((mask[np.newaxis, :, :, :], voxels), axis=0)
    pattern = re.compile(r'^Segment(.*)_Color')
    new_header = {}
    max_num = -1
    for key in header.keys():
        match = pattern.match(key)
        if match:
            num = int(match.group(1))
            max_num = max(max_num, num) 
    for key, value in header.items():
        new_header[key] = value
        if key == f"Segment{max_num}_Tags":
            new_header[f"Segment{max_num+1}_Color"] = "0.694118 0.478431 0.396078"
            new_header[f"Segment{max_num+1}_ColorAutoGenerated"] = "1"
            new_header[f"Segment{max_num+1}_Extent"] = "125 303 176 216 52 81"
            new_header[f"Segment{max_num+1}_ID"] = f"Segment_{max_num}"
            new_header[f"Segment{max_num+1}_LabelValue"] = "1"
            new_header[f"Segment{max_num+1}_Layer"] = str(new_voxels.shape[0]-1)
            new_header[f"Segment{max_num+1}_Name"] = "lumen"
            new_header[f"Segment{max_num+1}_NameAutoGenerated"] = "0"
            new_header[f"Segment{max_num+1}_Tags"] = header["Segment1_Tags"]
    print(new_voxels.shape)
    print(new_header.keys())
    # print(header)
    
    nrrd.write(output_filename, new_voxels, new_header)

    segmentation_info = slicerio.read_segmentation_info(output_filename)
    
    number_of_segments = len(segmentation_info["segments"])
    print(f"Number of segments: {number_of_segments}")
    segment_names = slicerio.segment_names(segmentation_info)
    print(f"Segment names: {', '.join(segment_names)}")
    spacing = [abs(header['space directions'][i+1][i]) for i in range(3)]
    assert False

```

---

<div class="post-metadata">

**Author:** ![sun-wanqing](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/sun-wanqing/32/67673_2.png) [@sun-wanqing](https://discourse.slicer.org/u/sun-wanqing)\
**Post date:** [November 6, 2023, 1:51am UTC](https://discourse.slicer.org/t/how-to-use-python-to-add-header-content/32573/3 "2023-11-06T01:51:05Z")

</div>

it works!!!
