Scripts_collection/Orientation and DICOM2NIfTI/Orientation in MI and DICOM...

1105 lines
183 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# ORIENTATION IN MEDICAL IMAGING\n",
" \n",
"![Coordinate Systems][Coordinate Systems]\n",
"\n",
"## World Coordinate System:\n",
"Coordinate system in which the patient is positionned in the PET, CT or MR\n",
"\n",
"## Anatomical Coordinate System:\n",
"- *Axial plane* is parallel to the groud and separates the head (Superior) from the feet (Inferior). It corresponds with the $z$ axis in the world coordinate system.\n",
"- *Coronal plane* is perpendicular to the ground and separates the front (Anterior) from the back (Posterior). It corresponds with the $y$ axis world coordinate system.\n",
"- *Sagittal plane* separates the left from the right. It corresponds with the $x$ axis world coordinate system.\n",
"\n",
"Most common definitions are:\n",
"- **LPS** (Left, Posterior, Superior): used in DICOM format and by (Simple)ITK\n",
"$$ \n",
"LPS = \\begin{Bmatrix}\n",
" \\text{from right towards left} \\\\\n",
" \\text{from anterior towards posterior} \\\\\n",
" \\text{from inferior towards superior}\n",
" \\end{Bmatrix}\n",
"$$\n",
"\n",
"- **RAS** (Right, Anterior, Superior) or Neurological convention: used by NIfTI format and by NiBabel and SPM\n",
"$$ \n",
"RAS = \\begin{Bmatrix}\n",
" \\text{from left towards right} \\\\\n",
" \\text{from posterior towards anterior} \\\\\n",
" \\text{from inferior towards superior}\n",
" \\end{Bmatrix}\n",
"$$ \n",
"\n",
"- **LAS** (Left, Anterior, Superoir) or Radiological convetion: used by ANALYZE format\n",
"$$ \n",
"LAS = \\begin{Bmatrix}\n",
" \\text{from right towards left} \\\\\n",
" \\text{from posterior towards anterior} \\\\\n",
" \\text{from inferior towards superior}\n",
" \\end{Bmatrix}\n",
"$$ \n",
"\n",
"## Image Coordinate System\n",
"The image coordinate system describes how an image was acquired with respect to the anatomy. Medical scanners create regular, rectangular arrays of points and cells which start at the upper left corner.\n",
"The *i* axis increases to the right, the *j* axis to the bottom and the *k* axis backwards.\n",
"\n",
"The file standard assumes that the voxel coordinates refer to the center of each voxel, rather than at any of its corners.\n",
"\n",
"In addition to the intensity value of each voxel $(i,j,k)$ the origin and spacing of the anatomical coordinates are stored too.\n",
"\n",
"The *origin of coordinates* represents the position of the first voxel (0,0,0) in the anatomical coordinate system, e.g. (100mm, 50mm, -25mm)\n",
"\n",
"The *spacing* specifies the distance between voxels along each axis, e.g. (1.5mm, 0.5mm, 0.5mm)\n",
"\n",
"## Image Transformation\n",
"The transformation from an image space vector to an anatomical space vector is an affine transformation, consists of a linear transformation followed by a translation.\n",
"\n",
"### Quarternions:\n",
"The orientation of the $(x,y,z)$ axes relative to the $(i,j,k)$ axes in the image space is specified using a unit quaternion $[a,b,c,d]$, where $a*a+b*b+c*c+d*d=1$. The $(b,c,d)$ values are all that is needed, since it is required that $a = \\sqrt{1.0-(b*b+c*c+d*d)}$ be non negative. The $(b,c,d)$ values are stored in the $(quatern_b,quatern_c,quatern_d)$ fields.\n",
"\n",
"### The Purpose of the qform and sform in NIfTI files\n",
"\n",
"The `qform` and `sform` stored in a NIfTI file header are intended to fulfil the following functions:\n",
"- specify the handedness of the coordinate system (important for getting left and right correct)\n",
"- specify the original scanner coordinates (`qform` only)\n",
"- specify standard space coordinates (`sform` only)\n",
"- specify a relationship with another image's coordinates (`sform` only) \n",
"\n",
"The `qform` and `sform` should never specify coordinates with different handedness (i.e. have determinants of different signs). Otherwise it is not possible to tell left from right.\n",
"\n",
"According to NIfTI-1 Standard [1], the `qform` code should be set to either *unknown (0)* or *scanner_anat (1)*. While, The `sform` code should be set to either *unknown (0)*, *aligned_anat (2)*, *tailarach (3)* or *mni_152 (4)*.\n",
"\n",
"\n",
"### Orientation information\n",
"\n",
"| Name | Code | Description |\n",
"|--------------|:----:|-------------|\n",
"| unknown | 0 | Arbitrary coordinates. |\n",
"| scanner_anat | 1 | Scanner-based anatomical coordinates. |\n",
"| aligned_anat | 2 | Coordinates aligned to another file, or to the “truth” (with an arbitrary coordinate center). |\n",
"| talairach | 3 | Coordinates aligned to the Talairach space. |\n",
"| mni_152 | 4 | Coordinates aligned to the mni space. |\n",
"\n",
"#### Method 1 (The \"old\" way)\n",
"\n",
"| Form | Code |\n",
"|------------|----------|\n",
"| qform_code | 0 |\n",
"| sform_code | Not used |\n",
"\n",
"The coordinate mapping from $(i,j,k)$ to $(x,y,z)$ is the ANALYZE 7.5 way.\n",
"This is a simple scaling relationship:\n",
"$$\n",
"\\left[ \\begin{array}{c} x\\\\ y\\\\ z \\end{array} \\right]= \\left[ \\begin{array}{c} i\\\\ j\\\\ k \\end{array} \\right]\\odot \\left[ \\begin{array}{c} \\mathtt{pixdim[1]}\\\\ \\mathtt{pixdim[2]}\\\\ \\mathtt{pixdim[3]}\\\\ \\end{array} \\right]\n",
"$$\n",
"\n",
"No particular spatial orientation is attached to these $(x,y,z)$ coordinates. This method is not recommended, and is present mainly for compatibility with ANALYZE 7.5 files.\n",
"\n",
"#### Method 2: qform_code > 0 (Recommended)\n",
"\n",
"It is intended to be used to indicate the scanner coordinates, in a way that resembles the coordinates specified in the DICOM header. It can also be used to represent the alignment of an image to a previous session of the same subject (such as for coregistration).\n",
"\n",
"$$ \n",
"\\mathbf{R} = \\left[ \\begin{array}{ccc} a^2+b^2-c^2-d^2 & 2(bc-ad) & 2(bd+ac) \\\\ 2(bc+ad) & a^2+c^2-b^2-d^2 & 2(cd-ab) \\\\ 2(bd-ac) & 2(cd+ab) & a^2+d^2-b^2-c^2 \\end{array} \\right]\n",
"$$\n",
"$$\n",
"\\left[ \\begin{array}{c} x\\\\ y\\\\ z \\end{array} \\right]=\\mathbf{R} \\left[ \\begin{array}{c} i\\\\ j\\\\ q\\cdot k\\\\ \\end{array} \\right]\\odot \\left[ \\begin{array}{c} \\mathtt{pixdim[1]}\\\\ \\mathtt{pixdim[2]}\\\\ \\mathtt{pixdim[3]}\\\\ \\end{array} \\right]+ \\left[ \\begin{array}{c} \\mathtt{qoffset\\_x}\\\\ \\mathtt{qoffset\\_y}\\\\ \\mathtt{qoffset\\_z}\\\\ \\end{array} \\right]\n",
"$$\n",
"\n",
"#### Method 3: sform_code > 0\n",
"\n",
"The $(x,y,z)$ coordinates are given by a general affine transformation of the $(i,j,k)$ indexes:\n",
"\n",
"$$\n",
"\\left[ \\begin{array}{c} x\\\\ y\\\\ z\\\\ 1 \\end{array} \\right]=\\left[ \\begin{array}{cccc} \\mathtt{srow\\_x[0]} & \\mathtt{srow\\_x[1]} & \\mathtt{srow\\_x[2]} & \\mathtt{srow\\_x[3]}\\\\ \\mathtt{srow\\_y[0]} & \\mathtt{srow\\_y[1]} & \\mathtt{srow\\_y[2]} & \\mathtt{srow\\_y[3]}\\\\ \\mathtt{srow\\_z[0]} & \\mathtt{srow\\_z[1]} & \\mathtt{srow\\_z[2]} & \\mathtt{srow\\_z[3]} \\\\ 0 & 0 & 0 & 1\\end{array} \\right]\\cdot\\left[ \\begin{array}{c} i\\\\ j\\\\ k\\\\ 1 \\end{array} \\right]\n",
"$$\n",
"\n",
"#### Why 3 Methods?\n",
" \n",
"Method 1 is provided only for backwards compatibility. The intention is that Method 2 (qform_code > 0) represents the nominal voxel locations as reported by the scanner, or as rotated to some fiducial orientation and location. Method 3, if present (sform_code > 0), is to be used to give the location of the voxels in some standard space. The `sform_code` indicates which standard space is present. Both methods 2 and 3 can be present, and be useful in different contexts (method 2 for displaying the data on its original grid; method 3 for displaying it on a standard grid).\n",
"\n",
"In this scheme, a dataset would originally be set up so that the Method 2 coordinates represent what the scanner reported. Later, a registration to some standard space can be computed and inserted in the header.\n",
"\n",
"\n",
"# Main Software packages\n",
"\n",
"## Row- and column-major order\n",
"\n",
"Please, be aware that different programming languages or libraries store the data in different order. This might be of importance, for example, when reading raw data (e.g. Volumes-of_interest created in ACCURATE) or when multiple libreries are used (SimpleITK and NiBabel)\n",
"\n",
"\n",
"| Programming languages and libraries | Row-major | Column-major |\n",
"|-------------------------------------|:---------:|:------------:|\n",
"| Python: SimpleITK | x | |\n",
"| Python: Numpy | x | |\n",
"| C/C++ | x | |\n",
"| Matlab | | x |\n",
"| ACCURATE | | |\n",
"\n",
"Transposition of the data solved the differences.\n",
"\n",
"## ITK & SimpleITK\n",
"ITK and SimpleITK use the LPS convention. After reading a file, the data matrix is stored as $(z,y,x)$. However, when writing a NIfTI file they convert the data matrix to RAS.\n",
"\n",
"## NiBabel\n",
"\n",
"NiBabel uses the RAS convention. After reading a file, the data matrix is stored as $(x,y,z)$.\n",
"\n",
"## LPS (DICOM) to RAS (NIfTI)\n",
"DICOM's coordinate system is 180 degrees rotated about the z-axis from the neuroscience/NIFTI coordinate system. \n",
"To transform between DICOM and NIFTI, you just have to negate the x- and y-coordinates.\n",
" \n",
"\n",
"\n",
"\n",
"(Simple)ITK converts the data matrix to RAS when writing the NIfTI\n",
" \n",
"Further details in:\n",
"- https://brainder.org/2012/09/23/the-nifti-file-format/\n",
"- https://www.slicer.org/wiki/Coordinate_systems\n",
"\n",
"[//]: # (Links & Images)\n",
"[Coordinate Systems]: images/Coordinate_systems.png\n",
"[1]: https://nifti.nimh.nih.gov/\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Python: NiBabel\n",
"\n",
"For this example we will use a NIfTI file and the NiBabel library"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\f",
"\n"
]
}
],
"source": [
"!cls\n",
"# Libraries\n",
"import os\n",
"import copy\n",
"import numpy as np\n",
"import nibabel as nib\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Input data\n",
"cwd = os.getcwd()\n",
"os.chdir(cwd)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Neurological Convention RAS (RL)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Raw data matrix:'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"qform_code: 0\n",
"qform matrix: \n",
" [[2. 0. 0. 0.]\n",
" [0. 2. 0. 0.]\n",
" [0. 0. 2. 0.]\n",
" [0. 0. 0. 1.]] \n",
"\n",
"sform_code: 4\n",
"sform matrix: \n",
" [[ 2. 0. 0. -90.]\n",
" [ 0. 2. 0. -126.]\n",
" [ 0. 0. 2. -72.]\n",
" [ 0. 0. 0. 1.]] \n",
"\n"
]
}
],
"source": [
"filename = os.path.join(cwd,'data','nifti1','avg152T1_RL_nifti.nii.gz') # Neurological Convention RAS\n",
"# Load file with NiBabel\n",
"img = nib.load(filename)\n",
"\n",
"# Load the data matrix\n",
"#img_data = img.get_data() # uint8\n",
"img_data = img.get_fdata() # float32\n",
"\n",
"# Display data matrix\n",
"display('Raw data matrix:')\n",
"plt.imshow(img_data[:,:,50].T, cmap=\"gray\", origin=\"lower\") # Data needs to be transposed for visualization\n",
"plt.show()\n",
"\n",
"# Orientation information\n",
"print('qform_code:', img.header['qform_code']) # 0: unknown\n",
"print('qform matrix: \\n', img.get_qform(), '\\n')\n",
"\n",
"print('sform_code:', img.header['sform_code']) # 4: mni_152\n",
"print('sform matrix: \\n', img.get_sform(), '\\n')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Radiological Convention LAS (LR)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Raw data matrix:'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"qform_code: 0\n",
"qform matrix: \n",
" [[2. 0. 0. 0.]\n",
" [0. 2. 0. 0.]\n",
" [0. 0. 2. 0.]\n",
" [0. 0. 0. 1.]] \n",
"\n",
"sform_code: 4\n",
"sform matrix: \n",
" [[ -2. 0. 0. 90.]\n",
" [ 0. 2. 0. -126.]\n",
" [ 0. 0. 2. -72.]\n",
" [ 0. 0. 0. 1.]] \n",
"\n"
]
}
],
"source": [
"filename = os.path.join(cwd,'data','nifti1','avg152T1_LR_nifti.nii.gz') # Radiological Convention LAS\n",
"# Load file with NiBabel\n",
"img = nib.load(filename)\n",
"\n",
"# Load the data matrix\n",
"#img_data = img.get_data() # uint8\n",
"img_data = img.get_fdata() # float32\n",
"\n",
"# Display data matrix\n",
"display('Raw data matrix:')\n",
"plt.imshow(img_data[:,:,50].T, cmap=\"gray\", origin=\"lower\") # Data needs to be transposed for visualization\n",
"plt.show()\n",
"\n",
"# Orientation information\n",
"print('qform_code:', img.header['qform_code']) # 0: unknown\n",
"print('qform matrix: \\n', img.get_qform(), '\\n')\n",
"\n",
"print('sform_code:', img.header['sform_code']) # 4: mni_152\n",
"print('sform matrix: \\n', img.get_sform(), '\\n')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"NiBabel always uses RAS output space\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Conversion of DICOM to NIfTI"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\f",
"\n",
"PET image. Processing...\n",
"Static scan. Processing...\n",
"Ideal Image Orientation (0020,0037). Processing...\n",
"Head First Supine (HFS). Processing...\n",
"PET slice z-coordinate decreases -> Flip in z-coordinates applied\n",
"DICOM converted to NIfTI: C:\\Users\\vallezgard\\NIfTI\\data\\output\\s1_2400s_Phantom_EARL1.nii\n"
]
}
],
"source": [
"''''' Important DICOM tags\n",
"For further info:\n",
"http://dicom.nema.org/dicom/2013/output/chtml/part04/sect_I.4.html\n",
"https://www.dicomlibrary.com/dicom/sop/ \n",
"\n",
"(0008,0016) SOP Class UID\n",
" 1.2.840.10008.5.1.4.1.1.128 - Positron Emission Tomography Image\n",
"\n",
"(0018,5100) HFS or FFS (Empty if Unknown)\n",
" HFS: Head First Supine\n",
" FFS: Feet Fitst Supine\n",
" HFP: Head First Prone\n",
" FFP: Feet First Prone\n",
"\n",
"(0020,0032) x,y,z coordinates of the upper left hand corner (center of the first voxel transmitted) of the image, in mm (Required tag)\n",
"\n",
"(0020,0037) Image Orientation of the patient (Expected 1\\0\\0\\0\\1\\0)\n",
" Direction cosines of the first row and the first column with respect to the patient\n",
"\n",
"(0028,1052) Intercept\n",
"\n",
"(0028,1053) Slope\n",
"\n",
"(0054,1000) Series Type of the scan\n",
"\n",
"(0054,0414) Patient Gantry Relationship Code Sequence, i.e. orientation of the patient within the gantry.(Empty if Unknown)\n",
" Code Meaning | Retired code | Replacement Code\n",
" Headfirst | G-5190 | F-10470\n",
" Feetfirst | G-5191 | F-10480\n",
"\n",
"(0054,1330) An index identifying the position of this image within a PET Series\n",
"'''''\n",
"\n",
"!cls\n",
"## Libraries\n",
"import os\n",
"import numpy as np\n",
"import nibabel as nib\n",
"import pydicom\n",
"import tkinter as tk\n",
"from tkinter import filedialog\n",
"\n",
"## Input data\n",
"# Test data\n",
"#input_dicom_dir = os.path.join('data','phantom_EARL1')\n",
"#output_dir = os.path.join('data','output')\n",
"# GUI\n",
"root = tk.Tk() # Creates a blank window with close, maximize and minimize buttons.\n",
"root.withdraw() # We don't want a full GUI, so keep the root window from appearing\n",
"input_dicom_dir = os.path.abspath(filedialog.askdirectory(title=\"Please select the input DICOM folder\"))\n",
"\n",
"root.deiconify() # Makes the window visible again\n",
"output_dir = os.path.abspath(filedialog.askdirectory(title=\"Please select a folder to save output NIfTI file(s)\"))\n",
"root.destroy()\n",
"\n",
"study_name = 'Phantom_EARL1'\n",
"\n",
"## Predefined variables\n",
"ideal_Image_Orientation = ['1', '0', '0', '0', '1', '0']\n",
"\n",
"## Functions\n",
"def read_dicom_files(input_dicom_dir):\n",
" dicom_files = os.listdir(input_dicom_dir)\n",
" \n",
" try:\n",
" ds_list = [pydicom.dcmread(os.path.join(input_dicom_dir, filename), force = False) \\\n",
" for filename in dicom_files \\\n",
" if filename.endswith(('.IMA','.dcm'))]\n",
" except:\n",
" sys.exit(\"Not a valid DICOM files were found. Only .IMA and .dcm is implemented.\")\n",
" \n",
" return ds_list\n",
"\n",
"def sort_dicom_files(ds_list): \n",
" sorted_ds_list = ds_list.copy()\n",
" sorted_ds_list.sort(key = lambda x: int(x.ImageIndex))\n",
" \n",
" return sorted_ds_list\n",
"\n",
"def get_img_volume(sorted_ds_list):\n",
" # Get the voxel intensity array of each slice and stack it in the z-direction\n",
" \n",
" # Transpose the array to change the array order from row-major to column-major\n",
" # ToDo : Preallocate variable\n",
" img_volume_data = np.transpose(sorted_ds_list[0].pixel_array)\n",
" \n",
" for ds in sorted_ds_list[1:]:\n",
" img_slice_data = ds.pixel_array\n",
" img_slice_data_transposed = img_slice_data.T\n",
" img_volume_data = np.dstack((img_volume_data, img_slice_data_transposed))\n",
" \n",
" Image_Orientation = sorted_ds_list[0].ImageOrientationPatient # (0020,0037)\n",
" \n",
" Patient_Position = sorted_ds_list[0].PatientPosition # (0018,5100)\n",
" \n",
" patient_orientation_code = sorted_ds_list[0].PatientGantryRelationshipCodeSequence._list[0].CodeValue # (0054,0414)\n",
" patient_orientation = sorted_ds_list[0].PatientGantryRelationshipCodeSequence._list[0].CodeMeaning \n",
" \n",
" \n",
" Image_Position_0 = sorted_ds_list[0].ImagePositionPatient # (0020,0032)\n",
" Image_Position_1 = sorted_ds_list[1].ImagePositionPatient # (0020,0032)\n",
" \n",
" # Check for the Patient Position: HFS or FFS, and reorder the slices in z-direction accordingly\n",
" if str(Image_Orientation) == str(ideal_Image_Orientation):\n",
" \n",
" print(\"Ideal Image Orientation (0020,0037). Processing...\")\n",
" \n",
" if Patient_Position == \"HFS\" and patient_orientation_code == 'F-10470' and patient_orientation == 'headfirst':\n",
" \n",
" print(\"Head First Supine (HFS). Processing...\")\n",
" \n",
" if int(Image_Position_0[2]) > int(Image_Position_1[2]):\n",
" \n",
" print(\"PET slice z-coordinate decreases -> Flip in z-coordinates applied\")\n",
" \n",
" final_ds_list = sorted_ds_list.copy() \n",
" final_ds_list.reverse()\n",
" \n",
" img_volume_data_final = np.transpose(final_ds_list[0].pixel_array)\n",
" \n",
" for ds in final_ds_list[1:]:\n",
" img_slice_data_final = ds.pixel_array\n",
" img_slice_data_final_transposed = img_slice_data_final.T\n",
" img_volume_data_final = np.dstack((img_volume_data_final, img_slice_data_final_transposed))\n",
" \n",
" elif int(Image_Position_0[2]) < int(Image_Position_1[2]):\n",
" \n",
" print(\"PET slice z-coordinate increases. Please, check DICOM information.\")\n",
" \n",
" elif Patient_Position == \"FFS\" and patient_orientation_code == 'F-10480' and patient_orientation == 'feet-first': \n",
" print(\"Feet First Supine (FFS). Processing...\")\n",
" \n",
" if int(Image_Position_0[2]) < int(Image_Position_1[2]): \n",
" print(\"PET slice z-coordinate increases. Processing...\") \n",
" img_volume_data_final = img_volume_data\n",
" \n",
" elif int(Image_Position_0[2]) > int(Image_Position_1[2]): \n",
" print(\"PET slice z-coordinate decreases. Please, check DICOM information.\") \n",
" \n",
" else:\n",
" sys.exit(\"Sorry, this orientation was not implemented yet.\")\n",
" \n",
" else:\n",
" sys.exit(\"Please, check Image Orientation tag (0020,0037) and Patient Gantry Relationship tag (0054,0414)\")\n",
" \n",
" return img_volume_data_final\n",
"\n",
"''''' No need to anonymize now the DICOM\n",
"def get_header_data(dcm_set, output_filename): \n",
" anonymize_flag = \"Y\"\n",
" patient_tags = ['PatientID', 'PatientName', 'PatientBirthDate']\n",
" \n",
" output_txt_filename = output_filename + \".txt\"\n",
" \n",
" file = open(os.path.join(output_dir,output_txt_filename), \"w\") \n",
" for header_tag in dcm_set[0].iterall():\n",
" if anonymize_flag == \"Y\":\n",
" if header_tag not in [dcm_set[0].data_element(tag) for tag in patient_tags]:\n",
" file.write(str(header_tag) + '\\n')\n",
" file.close() \n",
"'''''\n",
"\n",
"def convert_to_nifti(dcm_set, output_file, frame_number, scan_duration_in_sec):\n",
" \n",
" img_volume_data_final = get_img_volume(dcm_set)\n",
" \n",
" # From LPS in DICOM to RAS in NIfTI\n",
" img_data = np.fliplr(img_volume_data_final)\n",
" img_data_volume = np.flipud(img_data)\n",
" #img_data_volume = np.rot90(img_volume_data_final, 2) # Alternative: 180 rotation instead of two flips\n",
" \n",
" Pixel_Spacing = dcm_set[0].PixelSpacing\n",
" \n",
" Slice_Thickness = dcm_set[0].SliceThickness\n",
" \n",
" voxel_size = np.array([float(Pixel_Spacing[0]), float(Pixel_Spacing[1]), float(Slice_Thickness)])\n",
" \n",
" slope = dcm_set[0].RescaleSlope # (0028,1053) \n",
" intercept = dcm_set[0].RescaleIntercept # (0028,1052)\n",
" \n",
" # Change the datatype from int to float and apply slope and intercept to the array\n",
" img_data_volume = img_data_volume.astype(float)\n",
" img_data_volume_final = (img_data_volume * slope) + intercept\n",
" \n",
" # Origin of coordinates: centre of the image\n",
" center = (voxel_size * img_data_volume.shape) / 2\n",
" \n",
" # Affine matrix\n",
" apply_affine = np.diag([voxel_size[0], voxel_size[1], voxel_size[2], 1])\n",
" apply_affine[:3,3] = np.array([-center[0], -center[1], -center[2]])\n",
" \n",
" nii_out = nib.Nifti1Image(img_data_volume_final, apply_affine)\n",
" \n",
" # Adjust NIfTI header\n",
" nii_out.header['qform_code'] = 1\n",
" nii_out.header['sform_code'] = 2\n",
"\n",
" #nii_out.set_data_dtype(np.float32)\n",
" #xyz_unit = 'mm'\n",
" #nii_out.header.set_xyzt_units(xyz=xyz_unit)\n",
" #nii_out.header.set_data_offset(352)\n",
" #nii_out.header['extents'] = 16384 # Remove?\n",
" #nii_out.header['regular'] = 'r' # Remove?\n",
" #nii_out.header['intent_name'] = 0 # Remove?\n",
" #nii_out.header['cal_max'] = np.max(img_data_volume_final) # Check if present in header if not specified\n",
" #nii_out.header['cal_min'] = np.min(img_data_volume_final) # Check if present in header if not specified \n",
" \n",
" # Save the NIfTI file\n",
" nib.save(nii_out, output_file) \n",
" \n",
" print(\"DICOM converted to NIfTI: \",output_file)\n",
"\n",
"## Read DICOM\n",
"ds_list = read_dicom_files(input_dicom_dir) # Read the DICOM files from the directory \n",
"sorted_ds_list = sort_dicom_files(ds_list) # Sort the DICOM files based on Image Index (0054,1330)\n",
"\n",
"# Check DICOM modality\n",
"if sorted_ds_list[0].Modality == 'PT' and sorted_ds_list[0].SOPClassUID == '1.2.840.10008.5.1.4.1.1.128': \n",
" print(\"PET image. Processing...\")\n",
" \n",
" # Number of slices per frame\n",
" nr_of_slices = sorted_ds_list[0].NumberOfSlices\n",
" \n",
" frame_number = 1\n",
" \n",
" nr_of_dcm_files = len(sorted_ds_list)\n",
" \n",
" scan_series_type = sorted_ds_list[0].SeriesType[0] # (0054,1000) \n",
" \n",
" if scan_series_type == 'STATIC' or scan_series_type == 'WHOLE BODY': \n",
" print(\"Static scan. Processing...\") \n",
" scan_duration_in_msec = sorted_ds_list[0].ActualFrameDuration \n",
" scan_duration_in_sec = int(scan_duration_in_msec / 1000) \n",
" output_file = \"s\" + str(frame_number) + \"_\" + str(scan_duration_in_sec) + \"s_\" + study_name + \".nii\"\n",
" output_file = os.path.join(output_dir, output_file)\n",
" convert_to_nifti(sorted_ds_list, output_file, frame_number, scan_duration_in_msec) \n",
" \n",
" elif scan_series_type == 'DYNAMIC': \n",
" print(\"Dynamic scan. Processing...\") \n",
" nr_of_time_frames = sorted_ds_list[0].NumberOfTimeSlices \n",
" \n",
" # split files in multiple of nr_of_slices. Each frame has \"nr_of_slices\" slices \n",
" dcm_set_split_by_frames = [sorted_ds_list[x:x+nr_of_slices] for x in range(0, len(sorted_ds_list), nr_of_slices)]\n",
" \n",
" for dcm_set in dcm_set_split_by_frames: \n",
" scan_duration_in_msec = dcm_set[0].ActualFrameDuration \n",
" scan_duration_in_sec = int(scan_duration_in_msec / 1000) \n",
" output_file = \"s\" + str(frame_number) + \"_\" + str(scan_duration_in_sec) + \"s_\" + study_name + \".nii\"\n",
" output_file = os.path.join(output_dir, output_file)\n",
" convert_to_nifti(dcm_set, output_file, frame_number, scan_duration_in_sec) \n",
" frame_number += 1 \n",
" \n",
" elif scan_series_type == 'GATED':\n",
" sys.exit(\"GATED scans are not supported yet\")\n",
" \n",
" else:\n",
" sys.exit(\"Please, check Scan Series Type (0054,1000)\")\n",
" \n",
"else: \n",
" sys.exit(\"Please, check Image Modality\")\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Conversion of ACCURATE VOIs to NIfTI"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\f",
"\n",
"ACCURATE VOI saved as NIfTI\n",
"data\\output\\VOI_Clinical_T1.nii\n"
]
}
],
"source": [
"!cls\n",
"# Libraries\n",
"import os\n",
"import sys\n",
"import numpy as np\n",
"import nibabel as nib\n",
"\n",
"## Predefined Variables\n",
"voxel_size_EARL = np.array([3.1819, 3.1819, 2])\n",
"shape_EARL = (111,256,256)\n",
"\n",
"voxel_size_Clinical = np.array([2.0364201, 2.0364201, 2])\n",
"shape_Clinical = (111,400,400)\n",
"\n",
"# Reconstruction protocol used\n",
"recon_used = \"Clinical\" # Options: Clinical, EARL1 and EALR2\n",
"\n",
"## Example dataset\n",
"cwd = os.getcwd()\n",
"os.chdir(cwd)\n",
"\n",
"# ACCURATE VOIs\n",
"voi_filename = \"VOI_Clinical_T1.voi\"\n",
"input_file = os.path.join(cwd,'data','accurate',voi_filename)\n",
"\n",
"# NIfTI Output directory and filename for VOI \n",
"voi_nifti_out_filename = 'VOI_Clinical_T1.nii'\n",
"output_file = os.path.join(cwd,'data','output',voi_nifti_out_filename)\n",
"\n",
"# Read the VOI file from ACCURATE and get the VOI file data\n",
"#voi_file = os.path.join(input_dir, voi_filename)\n",
"voi_data = np.fromfile(input_file, dtype = 'byte')\n",
"mid_index = int(len(voi_data)/2) # ACCURATE VOI includes first a mask and then the VOI itself\n",
"voi_data = np.array(voi_data[mid_index:]) \n",
"\n",
"# Set the voxel size according to reconstruction protocol\n",
"if recon_used == 'Clinical':\n",
" reshaped_voi_data = np.reshape(voi_data, shape_Clinical)\n",
" voxel_size = voxel_size_Clinical\n",
"\n",
"elif recon_used == 'EARL1' or recon_used == 'EARL2':\n",
" reshaped_voi_data = np.reshape(voi_data, shape_EARL)\n",
" voxel_size = voxel_size_EARL\n",
"else: \n",
" sys.exit('This reconstruction was not implemented yet')\n",
"\n",
"# Transpose the array to change the array order from row-major to column-major \n",
"voi_swapped_axes = reshaped_voi_data.T # Also: np.swapaxes(reshaped_voi_data, 2, 0) #\n",
"\n",
"# RAS in NIfTI: From Posterior to Anterior\n",
"flipped_voi = np.flipud(voi_swapped_axes)\n",
"\n",
"# Binary Mask of 0's and 1's\n",
"voi_swapped_axes[voi_swapped_axes <= 50] = 0\n",
"voi_swapped_axes[voi_swapped_axes > 50] = 1\n",
"\n",
"# Shape of image\n",
"matrix_size = np.array(voi_swapped_axes.shape)\n",
"\n",
"# Centre of image\n",
"center = (voxel_size * matrix_size) / 2\n",
"\n",
"# affine matrix\n",
"apply_affine = np.diag([voxel_size[0], voxel_size[1], voxel_size[2], 1])\n",
"apply_affine[:3,3] = np.array([-center[0], -center[1], -center[2]])\n",
"\n",
"voi_nifti_out = nib.Nifti1Image(flipped_voi, apply_affine)\n",
"\n",
"# Set header\n",
"voi_nifti_out.set_data_dtype(np.uint8)\n",
"voi_nifti_out.header['qform_code'] = 1\n",
"voi_nifti_out.header['sform_code'] = 2\n",
"#xyz_unit = 'mm'\n",
"#voi_nifti_out.header.set_xyzt_units(xyz=xyz_unit)\n",
"#voi_nifti_out.header.set_data_offset(352)\n",
"#voi_nifti_out.header['extents'] = 16384\n",
"#voi_nifti_out.header['regular'] = 'r'\n",
"#voi_nifti_out.header['intent_name'] = 0\n",
"#voi_nifti_out.header['cal_max'] = np.max(voi_swapped_axes)\n",
"#voi_nifti_out.header['cal_min'] = np.min(voi_swapped_axes)\n",
"\n",
"# Save the NIfTI file\n",
"nib.save( voi_nifti_out, os.path.join(output_dir, voi_nifti_out_filename) )\n",
"print('Congratulations! ACCURATE VOI was saved as NIfTI file')\n",
"print(os.path.join(output_dir, voi_nifti_out_filename))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# PMOD\n",
"\n",
"For this example we will use a NIfTI file saved in PMOD. By default, PMOD uses the LPS orientation, which is kept when the data is saved."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Raw data matrix:'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAN0AAAD4CAYAAABopeOfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO2da6xlZZnn/+8BUUEQimtRBRRIBTCAN6J2O5kY7cmoY5ovapzuGLqHCV/abvsyaXXmgz0fJtGk00rixKSi3WNPOu2tzWCM6c6E0UzmwzBT2DCgNFDcCwqKS4F3AX3nw94/9z7/Ok+9a+29zzrrFM8/OVln3d/1rrWf//tc31JrVSKRGA5rW92AROKlhvzRJRIDI390icTAyB9dIjEw8keXSAyME7e6AZJUSkkTauJ4xFO11rN94yh+dJJUSmnuw73h62ND1F6w6ucYe39EWLTdrf4Fft2u72XR9m6w/aGNjtsWPzo/xpeLdu6i21v3A2trG4/eo2ft0gfHalff8xdF62OPjnf4+Yv2e4SoX1bV/13b6UidLpEYGKNmuq7DiGi7M82i1/HtEYM5ut6P4/oyyNjR9/l9nX6OrtNillY/LsrYreEsy1/+8pcbHpdMl0gMjFExXdex9zL3WOa8lkSNdLqWLrIqidyXwRc1KETX8fWuz9/SiaLrRPs3e6QQPW+07kimSyQGxiiYrpSitbW1zmP/rvv7Svgu7Vxkf1/rYosJu663GKBl+uZ4101cd+m6PUKky/n5kS49tBXXr+/907p/Ml0iMTBGwXQR+uo+Lf9d1+u0rt+VOaL292Wq1jLyX55wwgnHbHdLl0KC+/IXv/jFuiXbo/OdARd9L339oS0sqwM6A/O8rNM/jmS6RGJgjIrpIqZalpmi9UXDpvpGmjgj+XaWMJMvTzrpJEnSiSeeuG7Jdq77spe9bN1+vz7guu5PYvniiy+uWyKxX3jhhQ3Xn3/++WMe5zqP3w9EuuBmWbW7XrfFzDxHRqQkEiNFk+lKKX8p6b2SDtdar5xu2yHpy5L2SHpQ0gdqrUfK5Kd+o6T3SPqJpN+ptX530cZ1jUBYNpC1dZ2ukRVRe123gnlgKhiK9ZNPPlmS9MpXvnLd8pRTTlm3znmveMUr1t2HpTOetytiIpgKpvv5z38uacZoP/vZzyRJP/nJTyRJP/7xj9ets5/r+JLrOuM583ZlDn8uR9cRU9+IpUina6EL0/0XSe+ybR+TdHOtda+km6frkvRuSXunfzdI+lynViQSLyE0ma7W+j9LKXts87WS3j79/4uSviPpo9Ptf10nIuB/l1JOL6XsrLUeat1nXopEEi5ioGWj0Y/Vli7HRdZGtsM4MBNM9qpXvUqS9OpXv1qSdPrpp0uSTj311HXHObP5kus7w7kk9v5xRokYKNL1YECWP/zhDyVJzz777LrlD37wA0kzJuT4SCcELWtnC111RLDod9K3fYvqdOfyQ5ouz5lu3yXpkbnjDk63HYVSyg2llP2llP3bLQ8skVgGq7ZebiQqNvxF1Vr3SdonSWtra9X2HfMmfRlvVUmiLeujWyFhqtNOO02StGPHjnXrZ5xxhqQZ48F0MJszZEtXdaZqMVrEbP58bh1Fh+Q5XEeE0ZzpnnnmGUnS008/LWmmC/70pz9dt4QJ3R/Y932uysrZiv0ciumeKKXslKTp8vB0+0FJF8wdt1vSYwveI5E4LrEo031D0nWSPjld3jS3/cOllC9Jeouk57rocxEWHTP7+Y6+mb5+PZjMmQ3rIgx2zjnnrFuHGWA01mE0bw9WQBiD9chaCCOgI6EzOfPBcBH8+SJd1Jc8Pzopz839eI4jR45ImjHfU089tW4/uuGPfvSjdc/TioCJ0DfLoXX+siOnLi6Dv9XEaHJWKeWgpE9o8mP7SinlekkPS3r/9PBvaeIuOKCJy+B3l2pdInEcoozBiLG2tlZPOumkMDoedPW/9c3Xis6LrJIwE7rXWWedJUk677zzJM0kPIx25plnSpoxwstf/nJJMwaAsZD8LGEEljCc+70iyU87I0QRKZG/ySNiXGfFCovuSn+wH10QxnLGY/3QocngCN0PndCfvxXZstl+uyimlPa88MILt9Zar/HzMiIlkRgYo2S6Rf0orYiUrtud4TzWEYm+a9eudUuX9Eh4zsMqh0R//PHHJUkPPvjguu0wn+sy3i50L8A6Olike7o/zHU8+oXj2M92mMb7j+dEt6M/0G3PP/98SdLOnTvX9Q/94tZNGO+xxx5btx+dz3XZVixn36yQFpLpEoltgm3BdF1jK7vqbK2xujMGugu624UXXihpJrnR3ZDo6GxIcBjtoYceWrdEcrvEjvLiIt3SYy5beXUtONP5usdQuo7l90WXg/lguj179kia9SfMhw53+PDEE/Xkk09Kkh5++GFJMwaMdN2+kSiL7o8Ybm5EkEyXSIwBo8qnc3SVPF2ZsFVLA8kMU6GbwGgXXXSRpJlVDt0NBkQHQxIfOHBA0kxnQ2LDbP6cHjuJddSzCNyv5zGe/ty+Hul6zvAAhoO5PcvAdVDXrdDBPFKFfjp48KAkae/evZKkiy++WNLM38d7cD8hzEe/ch/a0fKvtWwIflxrVJj5dInESDEapqu19o4UONa1NjovYkQkvscUXnDBJKIN3QOGg9lgInSLBx54QJJ07733SprpcugcXkPDdR6PWHFJ75niwJkFZnJrpTOqM5szqmcX0G/ESD733HOSZropuhiRJOhYMDDX4XwYE4bCaglzXXHFFZJmIwyYjpEI7aX9MCfX8wz2Flq2gBaTdbWPJNMlEgNjNEwn9c9jAy3J08oOgLGIJEGyoltgbTv77MlUYzAAkvXuu++WJN13332SZhLbJawzikesYP1kOwwHUyDheR4kuUflwyBelQqmpF9cd2Tpx8FQUTYBzEYMJQyI7tbKLGc/Vl2YCua88sorJUm7d+/esB/pF54HHZHz3boYoZXH2ULqdInESDEapiulLBxRMn+NLnBdCiukMxxWS7dOIknvvPPOdetIfJgh8lOde+65ko7WEdHpYByPOPGaJzw/TIeuxP1gFj8e3QidEeZw/19UIZp12slzMVLgvjAejMMIAB2Y7bQbBnX/Jcx39dVXS5IuvfRSSbP3FVkhH3nkkXX3catmS/ePsGyeZjJdIjEwRsN0UncJ09rvEtl1OHQAdCciImA4YinZ7zoHDEdMIEzDfZ3ZYDIYDt2N7ehurrM507jV0XUz99PBIDCvVx1zK2DUv864IIqQcT8nz0u/wmToxFh5YSTay8gBq7BbI2E8rMyuw3qECMzbyicEXWuq9GW+ZLpEYmCMhulqrb39cq1IFF+PsgTww7EOAyFpiSi5/fbbJc0ks/uh0HFgNKyerHNfdCn3M0WRJg73o3G+62yuKznT+f2c0ZzJ3N8HWEdn8phQ2umZ9fTLo48+Kkm6//77Jc1iLjkP3Y4IFK+dgj8P6+ZclL+k2UjEGdRjSx2bVR0smS6RGBijYbpFKje1sgu8ihUM47GU6ARIXqxvSN7vfe97kmYMh0SHMfCzcV2uB2MSKxjlu0U6k+tordlpaA8SHOb19sKwLJ1Zo+yEvpn7kfWV/bTPM9CJ6IHZPLYTq6RXS4PxsAp7rRhnPPcXds1eYb1rRWdHMl0iMTBGw3TzWDTmMsoaQJeAedC1nOGQfDDc97//fUkzKyWSEwnNdbCiwXRe5QuGadVPjPLmgFdu9uf2GNJId3N0zdh33dH9kV6fE8aNrJxRPiDthwHvueceSUf7QbEmez9jhYbx0G2xQvOefVailt83Yry0XiYSI8domG4+y2DRrAJnBiQm1jKYCSsX/iPG+ugK6HD4kdiP5IUhyf/ies5wUTs9L851ExDNuhNlDXAcEpzzoxlUXZfx7IdouzOXZ5Z7+/39RMzcqv2CrkdEC+8F3Y8RDTo0TOd5gJ535/3Rt1oYSOtlIjFSjIbpjoWuEoT9jO1hHrIDYDokIMchKdHh8BshGYmwgOEuu+wySbNIFvxvXM/nCoiqi7ku4gzZN5bUmcwjM1yHgQGcwdz/6FY62uuM7TVTnHFbOivtor+xCnsEDjq3z4lApj5Waq5DbC0Mh9Wa9dbcCatGMl0iMTBGw3THkupda1MgOb16F8yG7oXkI/8LXYFsAfxCSGgiVdDhYDwYzv1dUf5WZF31petGrpNFVag81tB1FY8scXh7veaJ39eZy99DpHsC7w/62xmPGFisxO4n4z0Su8n7hCkvv/xySbPvAIbD2sy6Z7YvqrO1kEyXSAyM0TDdMvAKwz4fnOfFwWToAJ6xjKTmPCIdYDh0Bq9Z4rPcsA5jRBEfUcyj60hRJWP3i0X1Kl1CO4P5c3gMo7cvysj354ny9aKRQataGfBMefx41FiB8fgOvAKA12aJ5krvW0+1hWS6RGJgjIbpNqoG1oJLZo88gamIOEFS4o+D6cizQnIiCdEhsFKiW0Qzo0ZzjnsEh+fBuQT32EDXrbyqGHBmi+YwiHRAh5+Hlc+zIkCLyVkyQvDnBa4TOjPid+W9oMth1aSdjGDQ5XxuBWq4wIDk+bk1c9UxmMl0icTAWIrpSil/JOnfSqqS7tBkEsidkr4kaYek70r6UK31+T7X7Vv7BMmJBHSmQ8Ih2RjrI9nw86CrveY1r5E0y7Nje8RMkWSPaty3ovddp3CmaUVMeCRLZF30fLeo36O5Elz3cob147xqlzO2n+e6qvcf75X3RKSKV3wmdpPvgthM1mHKJ554QlI8a1KrUvim63SllF2S/kDSNbXWKyWdIOmDkj4l6dO11r2Sjki6ftF7JBLHI5bV6U6U9MpSyguSTpZ0SNI7JP3WdP8XJf2ZpM8tcvEWwyEZibVzKxV+Gq6DH44lkhAJjB8PKyXXjdoTSWbfHzGNr3ski0d2RMzp94tmz4lm1/EYStcVWzGxHM+Iw6/vWRb+/K7TRfl9zjAeuUKkCSMXrJkwGO8dHZ+RkWey4/dDp46sxYPn09VaH5X055rMOX5I0nOSbpX0bK2VXjwoaddG55dSbiil7C+l7N+scJtEYoxYmOlKKWdIulbSxZKelfRVSe/e4NANf1G11n2S9kmT+ens2tE9160jQdG5XKcjMgU/DNYtxvBIKpiRsT6M6f4l9yNFuk1r9pxIN3RE89W16jZGErhldfPniaqpRdXWvBoYiLIlImuntzeaW53r8v6JHOJ9E1mCbkZVMRgR3Z3vBqs179/nvWtZM7tiGevlb0h6oNb6ZK31BUlfl/Trkk4vpfDV7Zb02BL3SCSOOyyj0z0s6a2llJMl/VTSOyXtl/RtSe/TxIJ5naSblm2kw2Ms8Z955AmSCQmHVQvrFDobOhz+HK7bqs4VZQ9E0fSegd3SCT1637c7/H5uHXRmc+ZxK2XETL7uzxUxZcva6n7GyGroz8mS7wDdHF0OxoMBySqBGX22JHREqpL5TLnLYhmd7hZJX9PELXDH9Fr7JH1U0h+XUg5IOlPSF1bQzkTiuMFS1sta6yckfcI23y/pzX2v1SXLgGOQjG61dF0OK5TXtEcywmzodFyvVXUraitM4gzp+XJRDKIjyjuLrKS+DkNG1smuc5ZHVtJWpnf0PCDKioh00ig21Gdf8rqjjHS8tgr+PZau2/HduN8uqomSsZeJxEgxytjLyOPP0mcuRbJhxeJ8apwQeYIViuM4D6b0rAG3Vnb1y0Q6EXBrnfu1nNEjv1oUrc9+9zN55rgzYRTN7+/DM8ZBpGt6u0GUReGRJz6zrLfHK1jzfrFSossRY0vkCjqf63ZEuqDjcXzrO8gaKYnESDEapusCzyZAMvnsN4zBqXVC5AkSyCNXPPPbEVXRcmA1iyI9XGfy5/J1j/SIZu+J5hz3jHOP6XSm86pkzlytKmHOkMxQOxRoLwzF8nWve9264z772c9KmtUzxV/Hd4Fuj25HZW+fBQm4jpdMl0iMDKNiutbsO0hgrFRIIqyV7McP41HjMCF+OfwxLtlhhg9/+MOd2o3kdJ2spdO5DuD5ZuzHX8TzOgMhebGueQxnNF9bVA/TdVm3ukbZBxGzde3HzQbvKWoPz4EVE6aE+RgxoStHWRnNmOHeLU8kEkthVEzX8lehe/mYG2sVkpoxOPlzAL8ckStRTOCy7Y+W0X2cWWBedFIkM5Ia8Byeb+eSONItgWe2+9IjTYhhjTAWZnNE7aJf6T9GRFgxsR0Q0cR34xWhQep0icTIMEqmi8bKHmuJJGI7ESdEorgu57VOfI7vZWProjy5iOEi/5fPaQBcUiOheb4o0zmac8D9d8B1OUYYznBjZbRFQf4d3xUjKq+N03qfLSTTJRIDY1RMF0Wi+AyiWJeQROwn8oCxN0ByoQNyHZjO/Ssu+bsisvK1YhmdGanh0mKSSNeL/EbO5FEWhFs13Q94vDEcYKSEVdv9wXw3vGePxQRpvUwkRoZRMZ3DmQ7JQ+QA/jokDbocY3PG4NQ55HyX6C7xl2W6qMZ/9Hws77zzTkn9mSTS9ZzZImtqNDNqS2Ifb+D7wY/r3x2Mh1V80f5JpkskBsZomG4jqYEkRvdCh0PiYLWE2YgGx38C0xGb6TGWzmheebgvnDFate9h2jvuuEPS8roSDMf98Tu1mNb9cP4cq/Jjjh3+/fC98Z3hD27Fvrbw0ujNRGJEGA3TbQSvLoVVCYmDhCbGEusTugz+FT/emchr+y8K94c5wwxVajDSydzPxLpntntF5shveLwBvy5Mx/fDCAkbgvfjkNXAEonEAhgl07lVDQnjM59yHNHfMB3wDGAkFMtoZtFFrZega93O22+/XdLqdDmsuuhyUb6bWy+d8byfWvU5+7ZzrCBmle/Jvzd0vKhKXGaOJxIjxSiZzmuE4CfBioTkAVgvkVQgqtTs92nVNOmK1vlIwFUzHNWseH6YOspgb81H57rvsv3iDHfVVVcdsx2e4Q5zs2zlC3pNFUDFZrJQbrvtNkmzamH457iP5zfCdD7SiuqKRkimSyQGxmiYbr4amNcGgek81pKaFehySEaXTO5P8UiURWvS98WqGe6yyy6TNJP4rcrSbp1sRaCs2j/nDOf38+yIrhWpgb/XaIZXn0nX/bZYMVmH2TjP/b19I1OS6RKJgTEappuHR0rAdO5PwsqEZGIsTsQK50X+OY++j+o2jhVddbXWXAybzXCgNYNpq53R9XzpdUK9NoyPpDjOdUiO9+wC/JetGjgRkukSiYExGtE+L6Uj66XrIIy5XTK1/EyRDrdZOh1WslXpcldccYWko3VUl+j+nFEWRDQrzqrR9fpRBexorvSIOV1HBK7bsd8z71l3P6czZNZISSRGjtEw3fw42CULY2rPAvA6j17T3iVZK3N72dhLv8+qGQ5rpd/P61Y6WnMUtHSiVY0AutYBdUaLdG5/3sjaGTGi399HDIyg3Nrp/suuuvWv2nXMvYlEYuVYiulKKadL+rykKzWZW/zfSLpb0pcl7ZH0oKQP1FqPdLze+sYFeV0+Bve5Bdy65JIsspqtCqtiOIfrbMAZKpK0UXUyl/Cb5bdsWSmjee6iPEe2M9IhYskjWqLvihGU64jOrNEMta051CMsy3Q3Svr7Wuvlkl4n6S5JH5N0c611r6Sbp+uJRGKKhZmulHKapH8u6Xckqdb6vKTnSynXSnr79LAvSvqOJlMit6531P+t2Eiv3hXN24bkiqLuo2pZfbFqxkSXY541f46u1roor2/ZGUX7omtUfqT7wWz+/hjxsHTdEAZza6RbISMdLdIJFx0xLcN0l0h6UtJflVL+sZTy+VLKKZLOrbUemjbmkKRzNjq5lHJDKWV/KWX/UMmdicQYsIxOd6KkN0r6/VrrLaWUG9VjKFlr3SdpnyStra11+tW1JDZwyeS6QjTj57JMtWprJXMvIKEjq6yjxRxRXUs/b1nmb7WrNUtT9L7dShlVxo4qaEcjJ/9uomyFZSsDLMN0ByUdrLXeMl3/miY/widKKTunjdop6fAS90gkjjsszHS11sdLKY+UUi6rtd4t6Z2Svj/9u07SJ6fLm7pes8U0EaO15gnzSIjI6rRsJMaqrZU+ZzjWuUi3jSJUsOI5Q0T97f0K0y4Ln52o68jC36e3z+dQj3TWiCm7Wnuj+f36WnuXdY7/vqS/KaWcJOl+Sb+rCXt+pZRyvaSHJb1/yXskEscVlvrR1Vpvk3TNBrveucx1HS3/lB8XRThEx7k1izy9rlgVw6HLXXLJJZJmFYc9X9ArX7ckeRSx4uc588AcZFwvC29f19orLUZszbHOczjjR98V1m+3bkZM5+3MiJREYmQYTezlPFySRLPHRP44l0iu03k2gvu9sBq25qheFbjP5ZdfLunojGevx9iq0hVZA6PIFbfi0o/olKtiOkeLESJdNWKU6HvxEY/H6rr/M8qr9EiXRWN1k+kSiYExaqZziQuiObo5D0nkVrfIehbNWrPZ8OyBSDLzHPSDV0WLrJmtiBPPUwOuA8G0xLSuGs5cXa2NXSNqIh3Os1RclwOeZ+dW5b7BHcl0icTAGBXTuWQjnykae3vtkygvrqULRLrDUPDIB68Rw36sqi6hfe70VqZ0q86n15XkvpvFdNH7aTGfW11bUf9+Hf++vMK12woiK2gyXSIxcoyK6QASxOsQ+hzPrTF4pLNEUeRDwSseHzhwQNJMt4uYKcoUjyJuovnmPAYxqh+5qCRvIfIPRiOOrhnZIKr65vdxWwFzZnjVObcRuE6X89MlEiPHaJhu3rcUWS/dGuk1VLiGZ5RHERfRbDabjcjvF81qw6xDLNFFIgkbMR2SPGI80LXu5KoRWR15j87w7o9r+XEZOXGcRx5hFaaf/DifU6EV4RMhmS6RGBijYbp5ONPBXEgcJB+SDAnFehRrGEl2jvNKv0Oja+QLjEiFa5Znn322pKN1XrduRtWsImvmqupgeuRPZG3lfcAo0cglyqqI2s39uC62AvrD58pwfx6ROc6YfZFMl0gMjNEw3by0i3Q6n58MSeZWJyQi50W1ViJdZdmZWDcbLZ2QGUSdwSK/ZrR03XDViPylzmQwjVfyjjLM3aobMRbfByMBmM6t2xzHPIgR4w5RIyWRSCyA0TDdPDyG0iUTksXnr8OK6boO5yHJgPuBxs5wXeGMHs01HjFZy7q5KPrqhh717xEhXp+yVTOG859++mlJs++CWZ6wDTAiwIbAku8wsop3rQqWTJdIDIzRMF2t9agxOkyERMLahORBl0NCwXjPPPOMJOnZZ59ddx4SysfsoGuF3rECXQ/dzmeiBVFWgtcC4bxVx1xG79nb16p65swHovxAmIqMfHS8U089VdLs++G8yD/nTOdIP10iMTKMhunm2cX9Ls50rtsh0Rmbc63nnntO0qzGyBlnnCFpxpAg0nm2O7rWZYx0QJgGpltVVTAQVfWKsgi8rqW3ByZyxmY7IyC+B56T78b9mT6n/bKRKOD4+LoSiW2E0TDdvJSIatDDdPhLkDhIKCQWEtGZjrE4x3uNlFae2XaB63auw7YqN7suh868LNNF/rSoZkmU5RDN5uMjJM9DxGqJbsf7j0ZAznQ+woqeq4Xt/XUlEtsQo2G6jbIMgPvrkECe8YsVCn8dkomxPOsc51H4mx2BsVXwKlaeke7WSo/dhAGwBi8LmM0jTZzxgL8Xt7by/n1k5JnvMBYjph07dkg62nrp2QV8dx4RA1r1Qx3JdInEwBgN08376aK6l0geJJVXcUJiYc30uo2sR1Hq212Xi+B+pmj2nyjDflWAab09znSR364VYcPzuNWb7wamZj/fC0zOdWgP343HXC5bS+f4/MoSiRFjNExXSgnHwjAdEsf9dozNsV4yNve5ADjf/TluBVv1vGxbDdedotr/XecCXxSe/eEjlq5zDHiWSJQf6CMkrNkcTyZ+xHTE7no7Qdf5Eh3JdInEwBgN081LB5cgSD4kDhILSeR+Fsbq+JmQrO5v4fgoImK7Av+c+8EiXcT9k5GOtyxgkCg/sjUrDkzpzOs6qlfvQjdjnZEQTIcfku+O78ytnV1nj2ohmS6RGBhLM10p5QRJ+yU9Wmt9bynlYklfkrRD0nclfajW2gxlmGe3yIqJpMIK5f46j0xhHYnqTOcZxn6f7Y4oQoN1z5trzeu36vYAH2lEIw/X2TxLwf1/6PBEorAdhoPxGPHAkHwnfGdRzOWiWEWvfkTSXXPrn5L06VrrXklHJF2/gnskEscNlmK6UspuSf9K0n+S9MdlInreIem3pod8UdKfSfpcn+u2ZgZFgvlYHcntEowxOZLLM4CdMb0Gy3aB1810JvA8MK/87Ayyat0uskZ6e92a6gzoVkRnIEYyR44ckTTT/XkOash4zRhnuq6Z4n2xbG9+RtKfSmK8cKakZ2ut9MpBSbs2OrGUckMpZX8pZf+qy3YnEmPGwkxXSnmvpMO11ltLKW9n8waHbviLqrXuk7RPktbW1mqttSlRkWhILhjP/XVEpLDE2skS/53XxvDsBvffbTWiCtBg166JfKNfkPSR/zOaybZVLW1RRDPiolO25vD2pc8tzvl8H54/5zG6vHfu78zIEmaN/HB9mW+Z4eXbJP1mKeU9kl4h6TRNmO/0UsqJU7bbLemxJe6RSBx3WPhHV2v9uKSPS9KU6f5drfW3SylflfQ+TSyY10m6qcv1jiVVXbLBbDAWuhpWKRgOSYYVE4mIBOR4z1bwSJUWwwyFq666SlIcuYFu6jpa15lJkehRpMeyoD+jGXKjys+um0Z+Ms8m4Lvw+pbo/J5VwHl8H3xnrjNutU63ET6qiVHlgCY63hc24R6JxLbFSiJSaq3fkfSd6f/3S3rziq674TqSkjG4WzFdp0PCIcmRaCxdt8GqhX/GIzaiWXG8togvsaZGmestuM7jVryovyLG88gNtxp6O8GizM91fa4AZ1ivyO3PE9Uo8UrM6PBcH50fhvOK4Bzvfr3Irxitt7C9bOKJxHGA0cReSu0a9V75GcnE2B3miqLHgUedo/v57D/RjKXR0hnTKxSvqgaLz2rjEScey+hziEezIQFnGBjv9a9//br9kT/VI3y4bzSHvLffz3c/GvBKzz6S8ZhJRj5UFuC5ON5jelv1LRdFMl0iMTBGxXQt644iS/QAABMbSURBVJWP6ZHQhw8fliTt3LlT0sz/xhLJhg4YRbS4pAVRNaooosPnQo90QkfXGhte+8Mlss/r5td3posiUFiiA3ml56hStKOlC7uO5jqUM54zqGeKe8a3VxZgBEQ7sFZGVstkukRim2NUTBd5+kHkl0Kn88zys846S9LR9QyjzOWoPdGMpa7TRfPAteY078pwbu3zGiNRjGVUEyaaA4DniGqCRFbFaJ47EPVX63oeKeQM6wyHbhZZs2FuvhcYDr+vP7e3a1kk0yUSA2M0TLfRrD3z++bhkhrrE7rdOeecI2mWUY5/5pFHHpF0tB/Hx/Dub0M3g7nY7hLbmW2jZ9zoPpFu1LLeenUt4FbKSEJHkRZ95x6PdPGIYf16Pr+cR6BEWQb+nB47CWA2mI6Rz+OPPy5pNlJyhozmVOg7d4EjmS6RGBijYbqN9JmWxPd5x5588klJM8mFtQ3mQ+J5TJ6vA2e2rlH3HksYZRx71apWdL9L/kj3AC6ZIwb2CJAovy66LnDd2EckURaB63Y+EgD+HNzPswpgfkYojHTw33IdRkZ8N7z/qOrXstkFIJkukRgYo2G6eZ3uWMfMw2vOMyZHghFhgr8OiffEE09Imo3dkZBeFxOmjKLtvb2eCe3t9PNaEj7SITy/y9c91jKqORPB29d6Lx5ZEtVmiap+Re2KKge4nxLdjPfP/cgQ95EOVkq3WnrETFcG68t4yXSJxMAYDdN10Zcivx06A2N7xujnnnuupBnjnXfeeZKkQ4cOSZpJOBju4MGDkmbMiE7g1spWJWpf9/Oi7ABnlsha6DGeUb5ZdB2/T5QtEUXQtKzJrapeUYxlxJB+HNZm3jMjG/qV9mO9hukAx/t8da1ZeSJGS50ukRg5RsN08zVSWpIjkrQwlo/Zib2E+bBieTQ5kpPzvZZGxByRddWtk16Fy3WxKILFIzF8LnDPR4vyzTwixJ/H/WYtXZb7elU1t95GsZSO6L16BA66GyMTmArgh6NmDLoczAbT8X20Ym9XjWS6RGJgjIbppHYMYrTfKzMToUIEyplnnilpxlwwnkeVc/5jj01qKXklYJ/r2hki8lt5tStnJtd9okrGUZ6eZ2KDqH4kcGtrK8Y0mrvc5yhgu89/1zXiKMoH5D1hrWRE4iDmFh2e+zGSYcl3AkP31dUyIiWR2CYYFdM5orw64FYtn8cOJkMyotudf/75kmaM5jF8SECsnF4XEzhTRNZDj43sml8WWTUj3SzqD4czSFR3MtL9XJeLZt9xXTSy/nl7POIG3Zv3yHtxKzAjkosuukjSzHrp5xGj2cqbi763FlO3kEyXSAyMUTFdV8kSHe8Z0cRUotsRkcKSMT8Sz/PTiFzxjGPX6dxaF2VsO1w3A5zv93Gmi3Sw1ojA7w9atV0iJo0iUvz+rciNqB+xVjIyQZfziBbX5fw74H1yvb41UJatdwmS6RKJgTEapiuldB4zt6ybjPXx3yAZkZTkVeHHQfdDEgLO9/O8VkhUjzGKYXQJ7UzizxHl7aGjenZEFLPYygNzHdPrckYjC9flQKTbRVkPbg11XY4lDEV7GIHs3r1b0uz98F7x5/m8hlHFgBbGWOE5kUgcA6Nhuo2yDBatKeJ+O2csdDokI9ZMxvowh899gMREkkZZBlFtEGe+VuwhktgjRKJqZF4tq6su7NZQGNQjUqIqXM6gkXXSY1GdsbxuJcz26KOPSppZpf39UwWOJddlhINfzmfhaUXGtKrSLYpkukRiYIyG6TZCJFFa/jvgmeXE3iE58etccMEFkmb+mwcffHDdddEB8PN4PUskpls3u2ZcR4znfquI6bgfS494cUQRIp5V0fJDtmZI7RpzGcXOPvzww5LaWQT45Wgv7/mhhx6SNHuvHmMJun5Pq0IyXSIxMEbFdC2drq8VE/hc5egKPufBpZdeKunovDyXxPj90H2iWXo8yyDyk7luE+2PKkn3nfXHdThnOJ+tx/Plojm4I2tla7Yhzx5gJMLIws/39+VZI+7P88iTiIFbOnDWvUwktimWmXP8Akl/Lek8Sb+UtK/WemMpZYekL0vaI+lBSR+otR7pcL0N/4+O2QiRlQnJ6hEKSEQkJ7rB5ZdfLmmmCyJBfcZOGM/nrub+rhu1rGVuVXMGYR0m6poF4BI+sjI6UwOYDauuR+54doQznlsnfenWYfoVXdp1zj179kiaRaDQPnQ/RjKMTDyj3dFXh9tKP92Lkv6k1nqFpLdK+r1SymslfUzSzbXWvZJunq4nEokplplz/JCkQ9P/f1hKuUvSLknXSnr79LAvajJD60d7XnvdelQLpKtfD3iGMxEoWDE9C+Gyyy6TJN11112Sjp7vDJ3BmQGJSsxmFNnRqvQMM0fWTmemqIZLVKsERLGWPlMrTEf/RdH5EaN6Xhw6HMyE1ZiRCNfnvVx44YXrloxQYEZ0QKyXPldFqwpaV+tlxHBdmW8lhpRSyh5Jb5B0i6Rzpz9I1VoPlVLOCc65QdINq7h/IrGdsPSPrpTyKkl/J+kPa60/6Do+rrXuk7RPktbW1jYUEV2zDrqOsZF0HtvnfjsY6pJLLpE0k/QwHgyABIUxXaIjqZ1JPebQ/WHRXATO8P7cHjMZVXR262Ir8gTG8EidCLTH8+y4DroyOhhMhW7n/jgiTbBWRnlyrst1ZTjQ+t66WtNb3+FS1stSyss0+cH9Ta3169PNT5RSdk7375R0eJl7JBLHG5axXhZJX5B0V631L+Z2fUPSdZI+OV3e1OV689Khq/+tq2Rx3cKtcV5dCmskTLd37951x993332Sjp4XDskNYEisbJ6lAPNFdR6j5/Q5wqN6mVFtFbfiuc7pUfheOZn+cz9ea2ZUn12JEQbX9wx78uKuvPJKSdLZZ58taaazefaBz0nRtbpXK9YyOr7rdscyw8u3SfqQpDtKKbdNt/17TX5sXymlXC/pYUnvX+IeicRxh2Wsl/9LUqTAvXORa/YdUy8KrutZCESgYBWDifALvfGNb5Q0k+gwnlceRvJ6lSwqDVNBOqoGxnavmeLWR/cHRvUu+/YHoP0eieL7gfvxfDYd+gUdmH736zIyuPrqqyXNGM4z+mFKjzxp5Q/2tXqDjEhJJLYpRhN7uZG06RuB0hVuDUTCY/VCgqLbwSQXX3yxpKMZj+Nd5yG63XVI8vg4H2upZw8Al9xEZvj+yA8X1TBxa6vX8ncrrc9Q6jGZ6IIwjkf+wFDsB+iSWCWvueYaSbPsD+57//33S5pZO6PIE38+0MqP6zqiimwJg1gvE4lEf4yG6eYzx7vWu1yU4TxGEUkOE7Efnc2j8InRfMtb3iJJ2r9/v6SZ9dPrQiLx/T7oeETJY9V0nTKaNcethpF11iNbvBaJ63I+AoDBPObSdT3PW/Q5A6KaJDz/m970JkmzkQD3J1IFfxxMhzXUY0C7zr/X12qZmeOJxDbFaJhO6l9/MDq/NVaPJBqSEp2D/TCeR3jgx4PxYKYHHnhg3fV8bmwYiHVqtqDToEvCfJ5VwH4Y0XVAj5F0ZmI7zOQZ6M509IcvuQ7PAcO5v8xjTbkPc0xcccUVkmYxldwXXZkMcBjPa9lEDNdipr4Z46uqlZJMl0gMjFExXd8IgJa/pe98dy4pkeToJAcOHFh3XZgPCY1Vk8gTjvdZgZDQHpPIfZgrm+vADDApsZwwnWcXwGxYT7kfzwcz+XPCqB6jinUQBmOdJYzJ83nsJP0LQ1NvlLxFIk+4HlZOmI1aKTBcK8sBtLa3rJWtkdKiSKZLJAbGqJiuaxZBy0/i12vdz9fd/+T1Ft2aiMTFj0esIIx1zz33SJpZ8zwG0q2MMBHWUhgOpmAJ43lmOteBqWBKmAxm4r4wmD8PjOK6Iee3qn/BdJ61QYQPuqzXJXV/HCMAjosy4R1dv5OuWNbmAJLpEomBMSqmWzQmbtV1CiM/GJIWncOZinX8eD5PGufde++9kmYxg+5n83WfYdbrXHpenDMQjEs/0V50SY9RdKurL72f2A6Twmxk4LMkhhKm5vm9Ngrr6KR9Gc7b1xVdYzSXvW8yXSIxMEbFdK0IlOi4rpEE0fWi4/x4rxjtup/7tYgdRMKjgxFF75WM8XNFGdoRAzvcmslx3M+tflH/oMN5RrnPGgSTM5c7z8t2mI/r8rxewdlnSm354bqir27X+q66+v8iJNMlEgNjVEzn6GqdXLR6U3Rcq5oW614dzP1a+JVgAKx3+KVgPmIw0dlgJM7HeudWRBjMramtisVeodkrP3MeTIauhi5G+4mZRGeE0dzf54yObuvzAtJvHksZjXS6oi/DtY5bFsl0icTAGBXT9a3svFmSqMWgUeRKFGuJroZEp7oVOh86HszBOtdFt3EG5fps91lpoorGXi0MHY0IFxiL9uBPY7tHyHjkiVsl0dFYwnBunfS8QEdfhmvpXovqZGm9TCS2Gcqq6j4sg7W1tTqfDd11FppVYVHG9Jg8r22CbkMMJbVR0IFYh0nQ/Ty/zjO3YQLPWvD9nvlN+2AmmM3z99z/53MycD4Mi/WRyBZ0U48k8dhNb19U02TRb3RZK2ML3t4NMvJvrbVe4+cl0yUSA2NUTLfqql9d0TeWs6VjOqM482EFhAFZYs1kP4xH3pkzDuseueL+Q9eRonZF/YCV1rMKYFoYzJnXz4uskq3ZjPqia2Z411jevnVV5/yoyXSJxBgwKuvlqqLBo/OXja3rG/HSql0CM6BLoVvBdFg7YSJ0LfZzns8I6/C5C2A6j6n0SJQoY9zrW/JcnlHu1bl8GWFRxonOb0U0te7TNc+za/uS6RKJgTEqptssLFo9bFXXd+thVG8yqlniy2i/W32d+aJsAtf9oqwHZzZnPNfVoiWgP1qzEa3a7tC1ruVmIZkukRgYo2G6Olf30tHViti3WlMkeftWiep7PffnoGN55jdM4jO1uvXR55fr6+f0WYM8MqTlT+vKbN6fznB9M7Nb14++j2VtB30z1R3JdInEwBgN00ltCbXo9VpWpqF1Pb9/FGvo9SIja1vX7dH9+zKVWx8XrR3St9/7Wpe7+l2XhfdX5tMlEiPDpjBdKeVdkm6UdIKkz9daP9nhnF/93zXyo2v0+KoiTiIsG9HQul6LCbtuB32j7qP9i95n0X5ZlplW9V20GHtwna6UcoKk/yzp3ZJeK+lfl1Jeu+r7JBLbFZvBdG+WdKDWer8klVK+JOlaSd8/1knHsl6CrjF0rfPn7zm/fVVWy9b2Ra/n+1s6Y9d+2izG6dp/m6VrtbDod+Pn98Vm6HS7JD0yt35wum0dSik3lFL2l1L2jyHoOpEYCpvBdBuJhaN+VbXWfZL2SVIp5cnnn3/+x5Ke2oT2rApnKdu3DF6K7btoo42b8aM7KOmCufXdkh471gm11rOnjHdUGsRYkO1bDtm+GTZjePl/Je0tpVxcSjlJ0gclfWMT7pNIbEusnOlqrS+WUj4s6R80cRn8Za31e6u+TyKxXbEpfrpa67ckfavnafs2oy0rRLZvOWT7phhFuYZE4qWEDANLJAZG/ugSiYExih9dKeVdpZS7SykHSikf2+K2XFBK+XYp5a5SyvdKKR+Zbt9RSvnvpZR7p8sztridJ5RS/rGU8s3p+sWllFum7fvy1HK8VW07vZTytVLKP0378dfG1H+llD+avts7Syl/W0p5xZD9t+U/uhHGar4o6U9qrVdIequk35u252OSbq617pV083R9K/ERSXfNrX9K0qen7Tsi6fotadUEN0r6+1rr5ZJep0k7R9F/pZRdkv5A0jW11is1sbB/UEP2X611S/8k/Zqkf5hb/7ikj291u+bac5OkfyHpbkk7p9t2Srp7C9u0W5MP9x2SvqlJFNBTkk7cqE8Hbttpkh7Q1Eg3t30U/adZmOIOTaz335T0L4fsvy1nOnWM1dwKlFL2SHqDpFsknVtrPSRJ0+U5W9cyfUbSn0oim/RMSc/WWpklciv78BJJT0r6q+nw9/OllFM0kv6rtT4q6c8lPSzpkKTnJN2qAftvDD+6TrGaQ6OU8ipJfyfpD2utP9jq9oBSynslHa613jq/eYNDt6oPT5T0Rkmfq7W+QdKPtfVD8V9hqkteK+liSedLOkUT1caxaf03hh9d71jNzUYp5WWa/OD+ptb69enmJ0opO6f7d0o6vEXNe5uk3yylPCjpS5oMMT8j6fRSCsEOW9mHByUdrLXeMl3/miY/wrH0329IeqDW+mSt9QVJX5f06xqw/8bwoxtVrGaZJE99QdJdtda/mNv1DUnXTf+/ThNdb3DUWj9ea91da92jSV/9j1rrb0v6tqT3jaB9j0t6pJRy2XTTOzXJpRxF/2kyrHxrKeXk6bumfcP131Yosxsot++RdI+k+yT9hy1uyz/TZGjx/yTdNv17jyZ6082S7p0ud4yg394u6ZvT/y+R9H8kHZD0VUkv38J2vV7S/mkf/jdJZ4yp/yT9R0n/JOlOSf9V0suH7L8MA0skBsYYhpeJxEsK+aNLJAZG/ugSiYGRP7pEYmDkjy6RGBj5o0skBkb+6BKJgfH/AQE5fA9vTXzYAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"qform_code: 1\n",
"qform matrix: \n",
" [[ -2. 0. 0. 180.]\n",
" [ 0. -2. 0. 216.]\n",
" [ 0. 0. 2. 0.]\n",
" [ 0. 0. 0. 1.]] \n",
"\n",
"sform_code: 2\n",
"sform matrix: \n",
" [[ -2. -0. -0. 180.]\n",
" [ -0. -2. -0. 216.]\n",
" [ -0. -0. 2. 0.]\n",
" [ 0. 0. 0. 1.]] \n",
"\n"
]
}
],
"source": [
"filename = os.path.join(cwd, 'data','pmod','avg152T1_PMOD.nii') # Data Saved by PMOD (HFS : radiological)\n",
"\n",
"img = nib.load(filename)\n",
"img_data = img.get_fdata()\n",
"img_data = np.reshape(img_data, img_data.shape[0:3]) # PMOD Stores data always as 4D\n",
"\n",
"# Display data matrix\n",
"display('Raw data matrix:')\n",
"plt.imshow(img_data[:,:,50].T, cmap=\"gray\", origin=\"lower\")\n",
"plt.show()\n",
"\n",
"# Orientation information\n",
"print('qform_code:', img.header['qform_code']) # 1: Scanner-based\n",
"print('qform matrix: \\n', img.get_qform(), '\\n')\n",
"\n",
"print('sform_code:', img.header['sform_code']) # 2: Aligned\n",
"print('sform matrix: \\n', img.get_sform(), '\\n')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## PMOD: Reset Image (i.e. remove affine and flip data according to RAS orientation)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Raw data matrix (PMOD Fixed):'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"qform_code: 1\n",
"qform matrix: \n",
" [[ 2. 0. 0. -90.]\n",
" [ 0. 2. 0. -108.]\n",
" [ 0. 0. 2. -90.]\n",
" [ 0. 0. 0. 1.]] \n",
"\n",
"sform_code: 2\n",
"sform matrix: \n",
" [[ 2. 0. 0. -90.]\n",
" [ 0. 2. 0. -108.]\n",
" [ 0. 0. 2. -90.]\n",
" [ 0. 0. 0. 1.]] \n",
"\n"
]
}
],
"source": [
"img_data_fix = np.rot90(img_data, 2) # LPS to RAS = 180 degree rotation\n",
"\n",
"vox = img.header.get_zooms()\n",
"center = ((np.array(img.shape[0:3]) - 1) / 2) * vox[0:3] ## CHECK if -1 is needed\n",
"\n",
"affine = np.diag(vox)\n",
"affine[0:3,3] = -center\n",
"\n",
"# Save NIfTI file with the RAS orientation and no affine transformation\n",
"nii = nib.Nifti1Image(img_data_fix, affine)\n",
"nii.header['qform_code'] = 1\n",
"nii_filename = os.path.splitext(filename)[0] + '_fixed.nii.gz'\n",
"nib.save(nii, nii_filename)\n",
"\n",
"# Display data matrix\n",
"display('Raw data matrix (PMOD Fixed):')\n",
"plt.imshow(img_data_fix[:,:,50].T, cmap=\"gray\", origin=\"lower\")\n",
"plt.show()\n",
"\n",
"# Orientation information\n",
"print('qform_code:', nii.header['qform_code']) # 0: Unknown\n",
"print('qform matrix: \\n', nii.get_qform(), '\\n')\n",
"\n",
"print('sform_code:', nii.header['sform_code']) # 2: Aligned\n",
"print('sform matrix: \\n', nii.get_sform(), '\\n')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Row- and column-order in Python"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'NiBabel (Display = M(row,column)):'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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nPbYY4+tKvfUU08db7viiisAeOc73wnA7t27x9tOPPFEncc4bdu2bQBs3749O18A4jVWfm07/vjjx9v0XecYv6v8eGzVP6bF7+3/qkdM+9GPfgTADTfccFT915sbb7xx046dofroecqeyciRI0fST4DDhw8Dq++90t58800A3njjjfG2t99++6jyta/2m1b+oUOHAHjttdcAePHFF8fbHnroIQD2798PwOuvvz7epufuvPPOG6dde+21AFxwwQUA3HvvveNtd999NzD5HQE8//zzALz11ltHnc9abczBgwc5cuRIybb1UUyXAc8Af1JK+WEp5eullFOB82ut+0cH3g+cl+1cSrm+lHJnKeXOHscyxhiO7ubzPO8HfrPWekcp5avMYLbVWm8CboIVxdT26CFfrzS1xOoVAF5++WVg0kOcffbZ4207duwA4KKLLhqnPf3008Ckx4q9h7ZpvzPOOGO8Tb2mlBNMerFMjWSKKcvX5o/qS/nbz1ifrIy+vPe97wUmaiGy3kpmKEqpRc+F1C3k6rRL0bTbYPLsZupI5cYy+tzLmF/11u/hiSeeGG974YUXVuWJz5i+X3755eM0Pff6bTz11FPjbfqdHTx4cJym89S5TbPEptFHMe0D9tVa7xj9fzMrDdXTIxOO0eeBhWpijDEjpjZMtdangMdLKfIffQS4G7gNuG6Udh1w67rU0BhzzNHHlAP4TeCbpZQTgIeAX2elUfvzUspngceAX11WpVoZmJlCcrLBRKZKwr766qvjbeeeey4Al1xyyThNTjtJ3SiHJVMPHDiwan+A0047DVgtxSW3lZaZctHB3eX8lqTucrRG80LHjGl9TMUs7X3ve99R24bmnN4o5ESO5o6ucbzWQvcmPhddZltGZqq3afH+qdzohtBzrwEffQK88sorwOTZis+dHNz6BDjllFOAiaNbzm2Y/M6i876tc/aszWLe9WqYaq1/B1yTbPpI7yMZY0xP+iqmpVFrTR2ImUoQsddR7xTLeOmll4CJ2nn22WfH284880xgdW8g9aT80ZGuHki9jZzhsaxYVznCs55CQ/2xd+oKhchCDkRXD5QpuGU4xqWiomP8WFBPrSMXVt/DluzeZ89pq3ozx3hU70JlKMwAJhZDfHafe+45YPLMRstB5euZjCEy73jHO4DVAz16/mU5xN+Uyo31z85XZNdnmnry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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'SimpleITK (Display = M(row,column)):'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'Remember that SimpleITK uses LPS convention, while NiBabel RAS'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'To have the data in the same orientation, you need to transpose the data'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAASYAAAD7CAYAAADHEzmfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO19a6xt11ndmLbjPJw4fsX2ta+f8Y0dcBITRTRAVUUkqEAR6Q9oQyl1USr/wZBQJEjaHxSpSEWqgJQgVItH0woRaIiaKKJQZJIf/VE3ThMlxu9X7GtfP7HjJMQkzp39cfbYa5zvjDPXXPvsc/Y69jekq7PvWnPPNddjrzm+b47v+0qtFYlEIjEnnLLpASQSiUREvpgSicTskC+mRCIxO+SLKZFIzA75YkokErNDvpgSicTssKcXUynlB0spd5VS7i2lfGBdg0okEi9tlFV1TKWUUwHcDeAHABwH8FkAP1FrvX19w0skEi9FnLaH7343gHtrrfcDQCnlowDeDWDXF1MpZdJbsJSyh+G9uMAJRK+Jm1T245rpcfa7/4ix83XtetonBvDate7zXq7lbs9MrRW1VrtzLy+miwE8LP8/DuDvTe3klFN2WpM8EbfvpYqDejG5/vPF9OLGpl5ML7zwwq7f2cuLyR1tx+hLKTcAuCFs2/G5tW0dPwZ30d2PPbYfe+APiqH0jqcHvWNuPbBuX2uMLUx9wW6SPc4FPddg6vm32rvj9B57lediLy+m4wAukf8fBfBobFRrvQnATYuB5RSWSCRGsRdb6bMAjpVSriilnA7gPQA+uZ5hJRKJlzJWZky11hdKKTcC+AsApwL4/VrrX499L9K5lilHH5PSROd36jFlHI3spa5T9rl2J0+enPTd/Rqro9S8ni0Tsfea95hf+j29LhHct5f74MzNnj72sFK95z5WOVZr25yOfVCmHGqtfwbgz/bSRyKRSETs6cW0KsbeuHGGbq3c6ed1zFJTHeKtY/Ywjt4Zu2flRLfx76mnnrrc59hR3KZjddtie+2LLEeZUNzm9n3729/esc+x5dY1c+w07utFb/ue8fS2fzHDPStjv9Vcj08kErNDvpgSicTssBFTrhf75WSb6gwlnHmxqmbH9dXq09Hh0047bVtfuo1/1ZR72ctetm0fALziFa/Y9vflL3/5ct/pp5++o3005Zyppdu+9a1vAQCef/75bf/XbX/3d38HYLvgju20PT8706/HpFa0TONel8CqJuKqx16nlmjsHFsCy3UIMseuXTKmRCIxOxw4Yyql7NtS56ozWC8DWtUxPnXJW7eR8ZC1kPXsto3M58wzzwQAvOY1r1nue+UrXwkAePWrX73cxs+OTfHYbjxu3M7BHVmOsqJvfvObAAbG9PWvf32572tf+9qObWzHv2Rcuk0ZFo8VnezA6qy5l+Ws+hy1nq1eFtIKJVrnc9ozllWRjCmRSMwOB86Yaq12qX/K9yNa/hr3vVXf5j3fm7qc7/xDyoD42bEdsqKzzjprx7YzzjgDAPCqV71quS/6k4DBj+T2kR0pA3LbiJZYk+xIWQvZzTe+8Y1tbYCBDXEfMLCi5557bttfYGBWZFoA8Ld/+7fb/vL7emxlcNF3NSZVWDV+sZeR9bSf2v8mhZlTfoPJmBKJxOyQL6ZEIjE7zFouQExd/m+l6Wh9z+3bS/oGp/zmZ5poujzPz2qu0Ux73etet+3/APDa1752R3uacDTRdB/NOj1vmmY0aXQfTSt1KEfHqppmPDceW8Hz1X10zLdMJzXlOEZu0338rM7yr371qwAGk+/ZZ59d7mM7tgEGk8+dt5MoRHN2zFRZNaazhVVdFGMm46Yd4smYEonE7LByzu+VDlZKLaVYBuFitFpsZx1Yh6OxJWpzzmyyIrKXc845Z7nv3HPPBTCwI2AnKzr77LOX+8iO1GHNY5JdOIGisgQ6hJ2D2LEEbms5ulVywM9kSnotuI2OfWVTkVkCfVIFHX88N3WW87Nei7/5m78BADz99NM79rEPvZ5kVrzWTo4w9fe1DvHuOr4/daFnlWM+//zzOHnypP1CMqZEIjE75IspkUjMDofOlFtn6oh19sXxO2e2aonOO+88AMAFF1wAYLvZRse2mmtRl6SxbzRVVLtDE+Wpp54CADzzzDPLfTRHVDEdzRFnqjiHL8+3lexN20WTDhhMOF4fp0jXa8drwOvK7+u+VoqWMbOW1+4rX/nKtr/AYObxuur+GPOnn9dh3jmsuhCzqoZqaqzcWP+llDTlEonE4cKBM6ZTTjnFJiprMabQx67973f1DLf8TyZABzRnbmBgR0eOHFluO//88wEMrKjFjoBhZufsrIxsHfit3/otAP3stOWAdowgxsgpg4hQp7ljRZQX8DrpteM+bR8Zme5z2RfI/hybImPiX2CQHzz55JMAtrMpyhFUzU5JA6+BezYdC+lJM6zf7WE5ByVLaPWRjCmRSBwqbFxgOVXk2MI6xGDxmG75X2f2uIx/0UUXLfddeOGFALZLAsii2F5ncfoqHnzwweW2xx9/HADw6KNblbHe9a53LffdeOONXecU8eEPf3j5+YorrgAwnKf6gHSpniAzZDuXNtjJC2ImAWBnPBx9YLpPl/jJSMhydHy8D5pNgT47/lUmyu86HxbPjcwMGO4XfYPA4L/j/VV/ISUHyrB4Lk564ASue33+98s3G/t0/fYKOHdDMqZEIjE75IspkUjMDrNOe7IuJ9tu+3vSkqhzNCZhAwZz7bLLLgMwqLeBgdrT4a39kc7TRAOAhx56CADw5S9/ebmN5gLNHTXl1oHrrrsOwGDatJbbgZ1OY+c8VlMumijOVHGqbTqPaRIBgylHk0jj4txyPsdKE01NOSrq1fSL7VRRT5Nb++C9p3mnx37iiSe2/QUGJznvqcoReH9baVimotfU6vmN9Kb1bf2mpiy0JWNKJBKzw0ZS664D61wKVfC7cbYFBifnJZdcstzGz2RHnEWBwSGrTl2youPHjwMAHnjggeU+sgOdNfn5/e9//8rn1ALH21scIQomlTHxu7pEHoWY7r45CQL7oHMeGBhSjGkDfAYBMhL2peyF7Ead/ZQokEWp4NNt4+foZNfPyqC58HHixAkAw8KGjlslCjG5nkotWixqnZkBphZ5WJf8KBlTIpGYHfLFlEgkZoeNO79X+f6626vDl05gUnfVptCsUK0SP9PM075I2dWZfffddwMYaLyaPY6C00lLrKpd2g00VZ2OhqaDU37TBHKmXK96uWUW0vGsffGeOM1YT/I4Nf1iEjlg0E7R5HvssceW+6LCHxiuHe+9LnLws94/mnc8D21P054OcmBwkrd0T63aensxq3oc1i1d0hTNkkMypkQiMTtsRPm9X2/yqc4+pyDmbHbxxRcDGGQAAHDppZcC2O7g5uzN2e2RRx5Z7rvnnnsAbGdMnKnJRpQlcElaY+v0+AcBZXwxk4B+djGOvCeqjGcfzsHN73Kf68uxNbIWd99aqnPNwsD75WLf6DTXRQt+V9vzM9mv3mc+F3yOgOG5IVNy1W1UcsD+uM1VgHHygpY0ozdbQE/Suf2Ms03GlEgkZoeNywVWfev25pVpCb4446pg8ujRowCAK6+8EsB2xsIZT/0M9EPcddddAAaWBAz+AhUOkhVwqVljr3hs3aYCwP1AZG6uhpwiVux1Pia95q1IemVW8dhuOTxmJtBjR3+VbiNjGsuVxeeAzMTVrVNRJNkv76+yKbZTSQDlAnymlHnTF+XGQxGu+rzoL1MWRR9Zy/+06hL/1Ni3vbKpZEyJRGJ2yBdTIpGYHTae9oRYZ0K3sQRzXOqmmUQTCgCOHTsGYHB06z6aCffdd99y25133gkAuPfeewFsp/+k0qouplOUdF6do3SGaioUl3pknYjmmkvYpyYBx+MWDtQRG/tw/RNOFe5MS/ZFk85VXNFt0XzR++DkCLy/roINzSSNz4sOdDXzeC30mtAUowmophmfM134oEnP8ajLgVIU7YPOeycvIFaNu3PoVYWv8jtOxpRIJGaH2TCmvcTutL7rnKJkSpydrrrqquU+zlxkMnq8O+64AwDwpS99abmNsW86kxJ0cCvruvzyywEMMVTq3OYs7ljLfiEu2buZTsfTElhGRqNoxW9xFld20UonS8e1MiBX/TdW1HXj0nOLKXhdbJoWcqDz2jEgijTdc8F+tT3ZljrQyarJpHXRhZ/dQoyTF+gCDNCWBqwDe31ukzElEonZIV9MiURidhg15UoplwD4rwAuBHASwE211g+VUs4B8McALgfwIIB/Umt9Zrd+iN0SxSmdjCk4ptJCZ3po+hLGvzH2TU0tOr1Jt6lPAoDbbrsNwHaFLykyTUWt3EEtFPsEBr0KzRGnu3Fq51Z1kb0gJnxztN5VhXGmkyvrHR3Qrv9WKXI17+KxXUlxlzKGppwzFZ1Wi1DdE++Jmt7sj6YWdUrAoGFjDBwwmFguLpEmoqbBoTObrgbtn+l2XM5ymndqKnJRhsdxZupBVkwaQw9jegHAL9Ra3wjg7QB+ppTyHQA+AODmWusxADcv/p9IJBJ7xihjqrWeAHBi8fmrpZQ7AFwM4N0A3rFo9hEAnwHwS2P97ab8XoeT1zlrOXsokyGDoYNbo7wJLv9/4QtfWG57+OGHAfhZnM7s17/+9ct9/KzHjjFjYwyFn/eLMUX1tWNryoBipRht75ai43m22uh1bdXw681s0KNGdn0Qet4uno/j5T5NIkf2oveeDIZL/RoX58ZPRzgXW7hwAvi4TT7rdN4r4+OzSye7ZmEg3L1ZR2TGKn1MWpUrpVwO4LsA3ALggsVLC7XWE6WUnb/ure/cAOCGySNLJBIvWXS/mEoprwbwpwDeX2t9bsLy/k0Ablr0UafkY5razvk4ojQA2Clm05mOPiUyJc0WwBlSWQb9C/QnKWMii9Il3Tgzungm3RYZzbrB/p3w0UktYozcmLQhzsKO0TjWHFMcAz6rQDyO8504H1YrO4J7jtx9iP45ZV/8rt57PosuTS/ZlC7x83njNubyAgZfkUpdyPzZr15Pjoc1C/W8naQhyjX2kgdt34oRlFJehq2X0h/WWj++2Px4KeXIYv8RAE/s9v1EIpGYgtEXU9l63f0egDtqrb8uuz4J4PrF5+sBfGL9w0skEi9F9NgJ3wfgpwB8qZRCT/C/AfAfAPxJKeW9AB4C8OO9Bx2LZetJUuX2O2kA4510yZ6Ul7IBLcn9xS9+EcCwzKupb0nnlYIzto4mnCb/ovPR1V5zcWj7WXViN6iDVMcFeHMnOp6d8ts5xN2SND87J7tLOsexOoW5M9di+g+X0qV1vjoet7DC/mMaHR2/S9vMbfqc0rxT1wHV4xy3Pot8ZlXRzXHwub766quX++K1Y8SCosek03NTtMy1fXF+11r/N4Dd3gzvnHzERCKRGMHGU+u6emZOaEi4WTnGb2kUNhPWa1EBLrFSBEfhJDAsq9K56GKp3vCGNyy3cQmXTEkZSMth6mZZJwlgexcpvg5wvG6p2LGilsPXId5LV+yA18A5/R3jcIsEjhXtNpbdxh8ZnGNT7rlz7XluTkDL51Md43y2VDDJe0N5gS7x8/lU5kNG9eY3vxnA9vqHfE5dgj/3OyN7ahWY2M94uwxJSSQSs8NGGFNvzXPX3m2LAjetfkpJgIooeUxmC7j//vuX+5jLhjOLMiD6qVQSQCbm/EnOLxEZn86ojjnst48pshC3ZN8qRrAXYWyrr5bw1BVJcIjjd6l4W/fGnbd77tw43HWJPil9tlw+KQol+VyTzQNDuIqKUumfot9Jr2HMmqFjboUEkaWN5dpqFTtYBcmYEonE7JAvpkQiMTtsPFGcc2a3zDtHy0mJncqbZp06xJkal381OVdMh6smIKUBmnKVzkqOxzk73fgJpxZ2y+D7hWg+9prNU+Huc6T9ToXdgnPKt8yvMTMstmvVwHPbnDPepQt2VUz4DGtsHe8NnzF1llMuoM8uTTjG4H32s59d7uM46I7QSjx8xlryCz0Pt22qST/WPhlTIpGYHTYuF3DLkZFVuFnWVbDlkr3OOmQ3WiSAtd9Y80tnCjIeMizGwAHDLKPCODIrF23vlrxb5xYj94GDy5HTYkLrzPzgigs4h6k7ZlzO1zG7a0dm4hzXbtk8ssaWTEL7cJKXnkh9/T/ZkTqZowxmLDsC5S+UlmhxhM997nPb+tAFHMoKNG0wpQdkYTou9t8SU7buXw+SMSUSidkhX0yJRGJ22EiJcGea9ZoLpM2aVpWmHFOPqnOaTkUt3U09iIsNYl9Uh2vdN5pweuwe/ZVziDu1sMOqzuZVMTXVTK8D1FH8Vkxkj47JxdG5WDm3gODM7GiuuXQvLed6b6oP52wmnEuD56bPtdMV0fyiCaf9U/dE7Z66IxgdoSmmWfmFOiaNPGAaFpeqON4jYDWzLhlTIpGYHQ6cMfWkO41ws5QqZPn254yizm86vTWDAGcPV6GVTm+XRI7HdDN7bxR2j2LapZPdL7Rm9qkzXSt9bqt963gOjokSTjXvZnHCyQXiggbQFxuoDKVVfKH13dY10PGwqIWeE53XZDK64EM8/fTTAIYK0sAgQ9CICcoKyJzUuqBDfGr9wCmLKMmYEonE7LBxgSXh7HMXs+Ri2PimJ1PSWY3R14zQBga7mf2qcI19kH256HO1rVuCSVemJ37vIKvuOjDR/Zve9CYAfsnbCR8d09prGaAxQWqLYbnnoiWAdIyGTMllfnACy1auKYfIipyv1ZWfiucIDKJLzdFEMXBkTsDActhe8z65zBiUEFCsqYyJPib1O0W2POZvS4FlIpE4dMgXUyKRmB1mY8o5OLoX44eAwewiJVUF66OPPgpguwqWlJrUXfuiWUjZgCIqiXWMMaWFjlXpfzy2W5J2MVfrxI033rj8/OEPfxjAYNIlBlx77bXLz8705r1xSfycVKFVldgtnrTkEfyuPrscB6Uuasrxd0Dob4Rpf1SOcNlllwEYnODPPDMU2aZTnSmCdIzrilRIxpRIJGaHjSeKc9tazm+yEM0WwM+cUfTtzoTuOkNEJqNis9iXc8i6FLBO8Obat2bNVq0zggwH2M58VsU6+nixgde4lRoZaMc98r4pY4rxgmPyBX63JVrUMfI5dv3z+Wd8qI6VkgBlVdEKUQkOHeIqpaFzfV3MKRlTIpGYHfLFlEgkZoeNO79bymOnHaEZpvXb+JnmFMstAz5uKNYx076oqI2aFmCgqa5+mEs85uLhWorglraDNcJYwjyx/xjL5R1dDW5RRO9zK12IM9e4rZVvW7VHsW6dfo8aJ/4e1HHN34aacowRpXmocXRUj+uCEh3iTsHek9c/IhlTIpGYHTbOmAg3ExHKUKjSVpbDJVM64DTdaKyPBQwzCp13ZEnaF2ciN2uqwzEmFRurRdaKxxqr+hFBJ206sPcHYzN83O/YstvmGFMrtbFjZA5kSHx2nQyGyeRUMc5j0wmu7VgFiJk7AF8Xj/Ia/gbHYkbHkIwpkUjMDrNhTIooF1AfE2cBFh7Q/bR51fblzKCzTazYq7MB+3d5n+LxgJ0pXd1Sv0uh2hLsteLttArw3XffvWNsif1ByxfqMg4oyyd4r110vourjCzciTUdyGRUJExfEZkTM2wAO9PoAoOsgDFzyo5orehvkGyLf1MukEgkXnTIF1MikZgdZmPKtZx+ak6RkuoyKWkj0zFogiyXDI7mGtWtqmClSUYq7lJf6FjZL2n3GN1upcpopXnZj5i5RButVDwOY3XueC/5zLTquOk2jkNNLdc+Osf12eVnml8a7UBTThdiGD1Bt4jG0VF6oPICOsv5u3SKd0Wm1k0kEocOG68r5xCd3vrmj8v5wDBrkDGpeMzFFLEPygR0WTU6p924XEYAwjk0W7NHiykCwzVoyRfWHT+X2ELvkneLEbj0vLH6sUJFkeyDwkxlZHzGtY+Y5cDFmNIhrlYCHdYusRyd5Bpryu+q85vPJ53kTMaocPUkd0MypkQiMTvkiymRSMwOs0l74va7yhSkikqRaSq5elfOiR11Htp/HNtYTBupNI+pilqnD4nalDG1cByHjofly5noC9hu1iX2BjXBW7FsPZVjtL1TgLs8407XFvvVZ5Hj5fOmz1FUg6spR0e46v9i3KmWFOdvTx3o/E25SkIcx5hDXJGMKZFIzA6zkQs4uBpyLsaMMwsdgsqY2E5nHc4eTs0bZz+3BKxtIlNSxkQHoM4UsfLIWKxcTDjmks5RnRv3xz5dqt+e+LxWojs9N87UWlGDn3lv1CkaZ/1WVVxguG8uFozsVxdF4oKBq0/owPGoM9ld/9jesYRWtgl3H9wY3T4+N3pMPnuOtXDcvGYaa8psAa3flMbR8TeorCsuSrm+psTPJWNKJBKzwywZU5wh3KypswdZi0sK72aWWJveZQtw6UlbSeR57FbNuTiO2L9rE9u7umNuZnfShsg4dP/UzAYOnEkdS6M/wtW7d3D3Pi63u/PorVzsjh3vpfoGuVzunrEW23GMOD5/ek5OiuL8pITzU5GlKnuPRTOU7ZBt6rF5vi5jB2NMlbHycxxzHEcvup/GUsqppZTPl1I+tfj/FaWUW0op95RS/riUsjPaNZFIJFbAlGnyfQDukP//GoDfqLUeA/AMgPeuc2CJROKliy7eW0o5CuAfAfhVAP+6bPHC7wfwzxZNPgLg3wH4nXUMivTU0WFnerSqTjgnKuFi3+ISrYtdUkS5gOtf6X80sdyxnWPQyRHcttb447gcnDniqnPEe6TtXHwhx+pMuVbVnFZSPuc8dn21ngvdx7HRfNEIAkpR1LwjetwFOkb3f7bX9CLRZNXr6vqPZdLdog7NbTWDnSnH/bwmmibFXU+acs6xPyWlLtHLmH4TwC8C4IjOBfBsrZVP2XEAF7svllJuKKXcWkq5dfLoEonESxKjjKmU8iMAnqi1fq6U8g5uNk3t+l+t9SYANy362nWNsOXwdU5CN+vHOlzal/ZJBsP2yjic01XOZUdfjkURLeduix058SjH6GLxHCNz/+c5afsWa2k5+2ObsWMSLee0u29uf8+igo6tJcPolUI4Vt6SELh6g5GBOnmByinIbpzz21kOrTp3LemBY6CRGatcgM+ik2a0FpSmoMeU+z4AP1pK+WEArwBwJrYY1FmllNMWrOkogEcbfSQSiUQ3Rk25WusHa61Ha62XA3gPgL+qtf4kgE8D+LFFs+sBfGLfRplIJF5S2IuO6ZcAfLSU8u8BfB7A761nSAOcIpjodSo6kIJTq+Hoc9Qz7dZvy/HeMnOc6pzjcuaaS6HC7zpzwZmwbOeodW8NvGiCjp13y5yKJoQz5Vz+c2dm0yntrqczVZzD2plwcTy97Ymp+jAdI00ml3feLQzR1HPPRYxMcE5891zw3PQ3wt+Njqu1MNG6drth0oup1voZAJ9ZfL4fwHdP+X4ikUj0YDbKb/cGdbOti+huMSbnbOUsQCewzgZc9uSs4BJ9OUbgZk3nLI+Mxp13izG1FMsKx7Bi9LnCMYhW9Lw771bsYYwRBPoYUy/jiPdUj0m4pXUX08U+XKYIp7JvjUevZ3SIu3NzCxk9FXwdtH2MY6T8Qft3jMZV9eXvxSnv3eLUbnKQllM8Y+USicTsMBvG5OQCzjZtJXl3fTlwZuSsprMBl0U5w6gd7USU0S/UEmHquHsqr2p/btZ0BRCIVr9uZnR+m5YoteVjUkSflIt9c+ylZzncMUtlOXE530kD3Fhd/y1pgPt+S3bS8su17o3z9bUEwG4f2Y4u/3Ofxr5xv6tpxz5cEQ93vqsgGVMikZgd8sWUSCRmh9mYcg7OweoobyvlhaOW0ezSvmJCM5ekzim/WylIlFJzjD1L8a7fsTQs7pwIlyguVvNw17U3sVw0kePYdAzaP2O11Gx2aUCiGal904TThQya425cLn1JHLOrWNKKuxsrH94ytVrL5z1mG7Dz3rj+XXqemLIEAJ566qldx+PcFq3nzrlkTp482TznZEyJRGJ2mCVjcqxotzZj7aPITtvxe+ow5UztnM2cgdwSs5vVXDJ5FzVPuDimONu7BPnaPs5CLTGlfrclgnOs0y3nxxhEbeekH5HpKmNqxXTF8elnlwnBSS1c+tnWEnnrmC1ZiEvk5vpyx4oYq/Ic+9f2fMadcNilRO797RGtxRyHlAskEolDh3wxJRKJ2WE2ppyjvI6et2LTWrFsDq2EYy4/tnPS0gxxplZLud5yErbOwzlke2PTXP+tY05NV9G61i3HcCupWiuFjWpx2IfLQ+0WIdx5tzRaNIVaCw0ts037bynGW+l/3PdaLgpFjAvVHN5PPvkkAF9Xjua5W7SYWm1HUWtN53cikThcmA1jUkSHr0t/6mYWvtVdXTnX3vUf62PpDEympOlPY19j2QLiOTopgTIHHtMtYbu6dXH538X6uW2tZGpuW0vu0ErF62IcXaR8HB+wfZYHgBtvvHFHewdWJ3ZO/Ne+9rXLz/H4eq3pICbziPuBtmNcj+8cxS0G5/qPz7xrr/eBzIcObu3rueeeQ0Qcv167VtUWJ8PYzVGfzu9EInGoMEvGFN/WOjO5+DbOFC5vDd/grVgwZUBkSq95zWt29OmqAHOb8wG5elpR9KdoSQ5c7JiTO7A92QTZgo5Na85z/K14LJditsUCW74Dt6RO6AxMv4eilyH1fI/XxcV7RTGionXe2j4yV2AnOx3LMxaf5950uI6px33qO3XPdTxPF+PYI7YFPHscQzKmRCIxO+SLKZFIzA4Hbsrt5vBqOVpd/JlSzWiOuFg2lyKDUJpKSYCr5TW1Dh23OVVvb8K3eL2U3js6r+pdoG3GAMDll1++rY8xU65Fy3v2tdKrPvbYY81xrxPO1L3mmmsA9MsLIpyZ6kwz15dbmIgl150D2jncXQLEluq8pXSPY9HPui3Gco6lwxlDMqZEIjE7HDhj6nGAtZakuVzr3u50YrtEay3ho6uP5VKEtpyWrdS6LYwlLItjdcnndRm9h2loGzKGq6++ettxdBwtBuQi3p1kgg56t5Cx19l1XYisQq8Fr7VLBudEiOzLpZ91zmM+u630v27hw8lHOB61NFpFLXrSNusiAceq14u/S3efd+zot5wAABruSURBVHt+UmCZSCQOFfLFlEgkZoeN6Jh6Y7BII1Wn42gq+6NKWyl1TPcAtJOXxXisMe1IRK9p1nsNWrXUHn10q/jxXhzFzglMvPGNb9yxzZlrEXq/6IynmeFycjttzSYQ9XB6zblNTZSY5sVFHLjFk1adO6cXItT8oumkSnRe42hW6VjZRh3jvEfaPrpKqOvTz/ob7DHlUseUSCQONWat/HZq6ujgU1DRrLOUW75kf614r1Ykd0u97JyjrWh+x5xa4+lJKLYKWrICOsZ1bC2lu0apMw6LmQCYulj7uuSSS3Ydw0Ei3hPHmFrJ6cbqvrWq/7RkCK4eoGM+MW2uMiAyGl5/lZVwm4sgoHxGYwp5XfTY7MM51x0yVi6RSBw6zIYxtXwzOivzTe/ikriMqbFgTz/99La+gJ1L2DoTxTe+zppuPDGeaSymiH4UV/2UaM2yGkO2CREicdlllwHYfh9iIQfdz3PiDAysrwbZXuCkE9ddd91KfbVkFYBnSrGdS/DvBJN8Zp38Ih5PwWdYfVPKYuN3eb9ULsBnXu89f0v821toYTckY0okErNDvpgSicTsMBtTzi3nO7lAy+lH2nn22Wcv9z3yyCMA/FIrzULnUJ4qaXCObjrhXT0zR92dwjduO//885f7nIm1H+ZdyzF+4YUXLrdxjGeeeeZyGz9zny5M8DNlD4cdrYoruq21IKPPYnQrjMlm4qKOgseiCegc4w7nnHMOgO2pgfhM0k3i+nWpcqYgGVMikZgdZsOYHNzSPZmSOuw4U/CtroyJjjptzz64hK1LpzF+S2cfzk4uBaxLM8p26ox3lVBbiPICPQ4zA+g2MplNOsavvPLK5ee4BO9iDw8rY4piWSfzULQYUKvwhmM5LYlCSy7Avr72ta8t97l6gHymKBPQRQv28eyzz+7ov+X8bomcI5IxJRKJ2SFfTIlEYnbYuCnXk3BMKSZNMq0pRtOMZhsddsAQP6fmGqkuqahSUjqX+b2x2LeoxWnlFgd8+gyiVWvO9eVirr7zO78TwMGbdAqXfK03Md5c4cyRaMKN5UanCeRU/C1TzqUliTXt3HhcxAR/P6rOdyptukXOO+88ANurBT3++OPb+tLPLRdFxsolEolDjY0wJpfWswV9o9O5piyHn7k0rYyJjnBNpsaZh3FcTzzxxHIfl7+pdHXZBVryAldHzME50FsOYidHaM3ib3rTmwAcnKRgt/5jvJ3ey3vvvfdAxrMOtKrtttigY0XOOe0YU0yV65K7uTTPLjki2dozzzwDYDvbiZIXADj33HMBDL8pfV7JmNQKISNrSRamIBlTIpGYHTZSjKBVn13hZhHOHmojc+mTb2u1h7mkTqElMLzpucSpQrGnnnoKwLBMqjOFmxlbFUtdgvkYL+Xqv7uo896I9NjuzW9+8442yqI2KSuYK3p9X3HJ3jEaF/vmfEwuz1Ure4FLSxzrDKofllYFLQdla3xW9Dm99NJLAQwyARU0sw+VHPC31MrOMQVdjKmUclYp5WOllDtLKXeUUr6nlHJOKeUvSyn3LP6ePd5TIpFIjKPXlPsQgD+vtV4D4C0A7gDwAQA311qPAbh58f9EIpHYM0ZNuVLKmQD+AYB/CQC11m8C+GYp5d0A3rFo9hEAnwHwS2P91VqtArRl0ildJQVVGkmHHp3ZmqKBzmx1iNOUI91URzprm9GUcxVUWmNVet5yiLfqjiliu7E0Gq1KH/yupvWYi6xgToipWuJnIppmzpRrmWa9qUF6zaMYA6q/ES7wRLcHMDx3lAboZ6bRvfPOO5f7+Dtz6vFVVN4OPYzpSgBPAviDUsrnSym/W0o5A8AFtdYTiwOfAHC++3Ip5YZSyq2llFsnjy6RSLwk0eP8Pg3AWwH8bK31llLKhzDBbKu13gTgJgAopdRVKvEqOHvociff4GQ+XOoEBrkAE5sBQ7I1l9CdS6H8nkbKuzp00WnZErzt1i62VxbVqrHXcn734i1veQuAzcsK5gQurY8tTMTlf1e7UJlJq0ot+9U+ehaGnCSAv4fjx48v99GqcPGeFP0eO3ZsuY3PPX8bJ06cWO7jwpOLV23F8E1BD2M6DuB4rfWWxf8/hq0X1eOllCMAsPj7xC7fTyQSiUkYfTHVWh8D8HAphRnp3wngdgCfBHD9Ytv1AD6xLyNMJBIvOfTqmH4WwB+WUk4HcD+An8bWS+1PSinvBfAQgB9f16AiDXSmkCbIoq7COeVe97rXAdhuyn35y18G4JPIkabSpOP3gcGprlQ8qn+dKadpSVrOb1eWnGjlINdtPaai2+byXB+UY3xuoGZH702rpqDTFLXMNgdnqsdtTuWtbgg+93R0a3547mMfutDC+NALLrhguY1awNtvvx3Adq0ff2eaKz+Oeaz6zxi6Xky11i8AeJvZ9c7uIyUSiUQnDlz5vZtcoBUzNxZVzTc4HXz6dueyv6aApRqcznKN+eEMRAU4mZP25aqeuJmCs5KbeWNV1tguojUDOQa3Dsc4WdRBKsXnABeb5qQchLv37jmNVZWdY9xJAtiHWgn8rM8un1lKXtRy4BjJyjU64g1veAOA7Qs9ZFt8/jXW1EkO3PnGY2eiuEQicaixkVg5t+TthIOtN62257IlbWuVC5BNKWO66qqrAAwzy4MPPrjcx1mAviZdJqVIU2cbMqZW7XllQpEVuTg6RVx+dezIxc+5Y/eIWR2cIJN4MTKoVs0/J5Zt+ZFcZWaXnaIll2EfypgYB0eWBAzPapQG6LlwzPwNAEMlZB3rww8/DGD4jagIOeaVcuiV/+yGZEyJRGJ2yBdTIpGYHTbu/F4VziFOCsu/wOC008oplABQ6arpIeg4J91W5zedg2edddZyG005/lVTziUSi05CR+udaeCUx87R7WLqYh9TE/VpeyrFeewXo2OcJpDKPFzsW2uxwpk5Tg2+WxtgiAtle3Vm8zml9AUYXBlcwHELK1dccQWAweENDOfJxH3AIKWheehSU+9V3d1CMqZEIjE7bCS17lTxn6LlBOZbnQ47YIiS1vS5FFty9tCkc3TskUVpgizWP1PnOpkSZx2tWOpEdpEx6azWciaqWG6ueLEIMluJ/t3yf/yewi3ctASZrQICKoO5//77AWx/rmNFXX22jh49CmBgvFrr8IEHHgCwnX099NBDAAaW5tIAtxasHFIukEgkDjXyxZRIJGaHjVdJcdt60j0oompWtR104mnyONJYmmSs4AEMuidSZY0HIpVWJyFNOOcIpVrYnU9Lv9XCYTeTDgNcBZKeKjhjcXEx17dLgKiuA7oY6JqgtggYnnGnvua4Lr744uW+t71tK6KM0QtqttFFodu4gBRzeQOra5RSx5RIJA41Nl6Jt4XeSOXoZNZZh4yJKUKBofIDFdyMrgaAa6+9FsAwU2iyLc5qqgYnUyIDoopWj6lxVpzNWo7udcgpEquD98ZJKVqsyCV50z6ig1uV2c7BTYbEv2Tz2pf+DrgQw8Wdt771rct9ZEq0BMiSgMECUEuDvyHnqD8IJGNKJBKzw8blAj35g3r9MI6F0E7n8icw+Ji4tM+lVP1MxqQ2PG19ZWRq9wPbZxayJxVkxvN1sofd+kscDFykf4tFcZu7l04wSVmLihbJlJShk5lzyd49CyoCpfyFTImWATD4j9i/+kkpRdHx9DClqf7RKUjGlEgkZod8MSUSidlh43IBp6iN7XoVo6496bM69khracpp1RM6wulAdHFl6jik05KpU9Sh6caqTnjtM447sTk4U84lNORnmlNO4a998Flh/KaqtvlMaUI2ugyco5vuiNe//vXLbYz95AILFd3a/3333bfjODTh1G3Rs7S/n89rMqZEIjE7bNz5TfQ60nre0jpzcRbQGlicPciUdDmfsyCzETANr/arY6CDks5ydYZzttQYJvZHwac6L51I87A7v+dabbeFlpTD7XNxbrEqLjCIFvnMaOYKtlPGHR3tmqCQouArr7xyuY2/IbJ3SmWAgSlRcqALOE7wuVeMMa6x33EypkQiMTvMWmDp0JMe1okvdSbi7ER2o6wl+ry0njtnKcdyODspM+PSrDImzlSUEjBdLzDMiC2/02FjIExp3JOGVu8RZ3ENCeJ95TV3pa8UZDfsV/tychC24xhdWmIF27Ff7Z8+HPVtkqm3yh+555r5w6655prlNl5XzSUWQ1eUMbEdn09lfs6HFcexl0wCDrXW5veTMSUSidkhX0yJRGJ2mI1coBdT28fkXMBAoUmpNaq61T8rlWqFCTrQKT1Q5S7psyZ5I5WmI5RqXWCg55oJIWYocA5yPbdYrcWZta4ycEua4cwvl0yNJqguJtBk4rhcX+yj5XR243HL8w5uXM7hG81+NbVc/3FxQ1Pf8jnQe0/pCr/nzE9NNMjngc+bPhc0C7X/eEwdD8foFN09Epwx9Pwu4+++9Z1kTIlEYnaYjVygF1MToLtjcdbQJdPYvsUWtMb7pZdeCmCYjTVlKZmYpu4li2KUty4ns92RI0eW2+gc50zq6pS18gZpStT4PW3viiO08u649KrumDHvlGNwLuOCE97GPrS9i1eLy+36f+eMj7FsumgRCwMAA/tlzTVXrdYt//NZUWEv4ykvuuii5TYukJC5KbOno1sd3Hx+OH69DzEN8NjvaK8Cy14R9W5IxpRIJGaHfDElEonZ4dDpmFpw+oqW7sklliMdd/onUmOlyIyto0nH2nPAkJxLU0ywf5p0joqr9oVmI807rdBCh7KaBC6dCuFMv9jOXbuW+aUmAvtXE8vFkbX6j+fRMsUVzpndqmLC+6q6M15/LoqoCU7zyLWnyafPBceh94Y6NT4XWraeaXDVFcAFEsbUaYwmVeOqY4rjcA7ulonci9b9arWPx0wdUyKROFSYpVyg9XZv9dd6k/cmUOesw9nKLUkrw+IMytlPleKcIXXbPffcA2BY2tV0qXSY0jEODEu/nC01dS8dpZqILsbzjdVGi98buzdxad85m7UPMpNWFeCW0rrl2HdKce2fTmPeU3VmkwEpOyWbdfFkvDfaB4/vpBxctNB7Q/bL+6bSALIclZuQTdPRTSe7jk0lDRzPqnXf9oIeRpZygUQicahR9rP++I6DlVJLKXa52uW52e3/ET3xc1Pb04eiojzmUlIGRN8P/2qaXrbTMj+c9TgzOnakLCrOgpoulSyN/i1giKuK6YOBwd+jwr4WayGcT8r5eXrSzrZYmF6nWBoJGK4FWYsyJseKyHJ4PfW68j6oH0n7i4j+KmC4jrzWGvfIe6PSEt67OC5gYMTqR2K6XVcNN8b1xc8RU38jqzKsKRKC559/Ht/+9rftF5IxJRKJ2SFfTIlEYnbYuCnnlrCjSdCi/8BOmroO+um2ReoODAnlaELpEjCdnErnuVTM/rWOGFOharK5KC/Q5WpCx8P+KWNQs5OmqDpkeU40nVpxdDruWPVV2+n9i/dizFkej6OmGc/dmWa8Tqqk535n+nH8arpyaZ9/9TxoEqspTdON11qlIoSOh47qVmVdbR9T3jpzUrHO3/LU39IqqVDSlEskEocKXYyplPLzAP4VgArgSwB+GsARAB8FcA6A/wfgp2qtOwOztvdT4zIhZ9xextR6M0+N3WntazkLlSVwJuVsqQyFM6rGP/EzhZKaLpWzuC4LMw0rl441HSvbORblHN1kVmRVOkZGriv7ajnLe+UIrZi9KGJVhzpZjgoIo8NaHdcu6RoRmRAwMB+N2Oe94DZlR+7+8t7z+utYuZyv8XNkSNym99nFt/F6tOQwU9HDalfB1MRye3Z+l1IuBvBzAN5Wa70WwKkA3gPg1wD8Rq31GIBnALx32qkkEomER68pdxqAV5ZSTgPwKgAnAHw/gI8t9n8EwD9e//ASicRLEb2m3PsA/CqAbwD4XwDeB+D/1FqvWuy/BMD/XDCqVj9dOia3Le6bmmyuVwU7NeaHn2nuqGnm6D8/U/fk9mkfPCbNBTXl6ERV9XJMEuYcvg7Ua43pnmgOucRvzpSL5ppLMxITqGl7p2yO11zHraYZzVI6/dU5zX3anp/5VzVsHLdzxtMk0zpxvA96b+iMd7qkVqWSg1ygWhd6KiHt1ZQ7G8C7AVwB4CIAZwD4IdPUXr1Syg2llFtLKbeOHSuRSCSAvli5dwF4oNb6JACUUj4O4HsBnFVKOa3W+gKAowAedV+utd4E4KbFd+ti23L/KlHJu21rYWr7qUpZl0jM1RbjrMlZlnIDYHCMuyV+V3mVNerU6Ur5AWdqxvzpsXWZPS6l6z6XkI1oqfFdfGHrerpYM7IVrVzMa0DmowyI7bQ999OJrc5vHsuxIt5LdU5HtgMMDInsyCUE1PaRGbpKvy3sJSV17GMvyRqnHGdV9PiYHgLw9lLKq8rW2bwTwO0APg3gxxZtrgfwiT2NJJFIJBbo9TH9CoB/CuAFAJ/HlnTgYgxygc8D+Oe11t3XbOHlApx5W7FyvXKBXY65o31rabOnr9Z33Vj1fDhD04+hMzyFjxpzRXGm8z/xu7qN/XNcOmNz1leGFeO2VHpA/46rveai+Vs+O/qDHCuif0jPgyxH5QtxOV8ZkDIfgsdyzI/sRc+XDIkMVxkT2ZFjUWyv2QhasWzrrHi7l7xK8Xtjlsmq44p9Es8//zxOnjxpD9CV9qTW+ssAfjlsvh/Ad3eNMpFIJCYgld+JRGJ22HisXEsu0Jsorkd12ouWabbqtXJjcLXOoqkC7HT0MiZPP6uSO6qW1TyiOeUc1y7xGM01Xdbm51baXd0W69y58urcp2Yex+hi91zqFX52VUxouqqpRfNLTd24YKDObH7XmWsuaZ67FkSvmbRXc2rqIpOiJwKihX2XCyQSicRB48AZ0ymnnDLqIO5hTC0m0zsTtdof1HVxCwHKHOgYphNY47fIjjRbAOUHdKC7JXUVUfIzmZse2yVrW/W6kEG0YrRcqlxlIWQrrvIt96kzm+3IfNRxze/qQgC/S1boxKkthjiWvnlVIXCrXa/DupWBo6f9OhDH2nJ+J2NKJBKzQ76YEonE7LAR5/eYjqllyq2SkGqsvfvuJky51n7nDHb6n2j6qSOdqVbUWR4d7uqMd+roeL+cKeHMHcJpifhXHcuxwgkwmFrxL+C1RDTXookGDKaic6C78+Bnp0Fah3nUE9Ew9juYYn7tRbs39Xu7OdfT+Z1IJA4VNuL8DtsAbHe09qTWXeHYXe32KglYZzIv7df937EWshv+VXU0P6sDncwq/tXP6iyPS/wOLlaOzEcZCpmMq2Tr4gxjJRRXNcQxoF7F9dSEbKs6iKfGgO5HXFsvu2u1aaFHZpPO70QicahwKHxMoY9W/wDGZ7yD9iMp9ju6O147va5kOyoJiH6klgBSt/WOP4ohnYDTRdvzsy7ZR+bjGFBPbbUxrLoU34vW87fq8v/YvqkZOFrfW9ezm4wpkUgcKuSLKZFIzA5d2QX2E87hGKluK8Wu62OMwu7VhDvIhF17TWWhpg1Np1asoluSdo7uqYsJbjwt5XTruXDlxnsc11NNm9YzqdumxqG1jj01tq63rx73xV5+Fz3XfUr/yZgSicTssHHG1IN1zDottByOY32tk31Nbe9m7J7+WkUJxtCz+NDCVAd0C2PL//EeTnXkjj13Ux3Kq2aumPostpjVVKmCG2uLsa4LyZgSicTskC+mRCIxO8zGlGtR5P3SUvQkyFqHQnYdpqXDqtqU3r5apsF+pcOYMp5e527rPFxdPIdVx9Orq1p1/K5dj2m2F/fIVEf6KrqqZEyJRGJ2OGjG9FSt9eu11qfGm84W5wHI8W8Gh3nsQI4/4rLddhxoSAoAlFJurbW+7UAPukbk+DeHwzx2IMc/BWnKJRKJ2SFfTIlEYnbYxIvppg0cc53I8W8Oh3nsQI6/GwfuY0okEokxpCmXSCRmhwN9MZVSfrCUclcp5d5SygcO8thTUUq5pJTy6VLKHaWUvy6lvG+x/ZxSyl+WUu5Z/D1702NtoZRyainl86WUTy3+f0Up5ZbF+P+4lHL6WB+bQinlrFLKx0opdy7uw/ccputfSvn5xbNzWynlj0opr5jz9S+l/H4p5YlSym2yzV7vsoX/tPgtf7GU8tZ1juXAXkyllFMB/DaAHwLwHQB+opTyHQd1/BXwAoBfqLW+EcDbAfzMYrwfAHBzrfUYgJsX/58z3gfgDvn/rwH4jcX4nwHw3o2Mqg8fAvDntdZrALwFW+dxKK5/KeViAD8H4G211msBnArgPZj39f8vAH4wbNvtev8QgGOLfzcA+J21jqTWeiD/AHwPgL+Q/38QwAcP6vhrGP8nAPwAgLsAHFlsOwLgrk2PrTHmo4uH6fsBfApAwZZA7jR3T+b0D8CZAB7Awg8q2w/F9QdwMYCHAZyDLSHzpwD8w7lffwCXA7ht7HoD+M8AfsK1W8e/gzTleKOI44tts0cp5XIA3wXgFgAX1FpPAMDi7/mbG9kofhPALwJgwNa5AJ6ttb6w+P+c78GVAJ4E8AcLU/R3Syln4JBc/1rrIwD+I4CHAJwA8BUAn8Phuf7Ebtd7X3/PB/lichGIs18SLKW8GsCfAnh/rfW5TY+nF6WUHwHwRK31c7rZNJ3rPTgNwFsB/E6t9bsAfB0zNdscFr6YdwO4AsBFAM7AlvkTMdfrP4Z9fZYO8sV0HMAl8v+jAB49wONPRinlZdh6Kf1hrfXji82Pl1KOLPYfAfDEpsY3gu8D8KOllAcBfBRb5txvAjirlMIYyTnfg+MAjtdab1n8/2PYelEdluv/LgAP1FqfrLV+C8DHAXwvDs/1J3a73vv6ez7IF9NnARxbrEqcji1H4CcP8PiTULZyNPwegDtqrb8uuz4J4PrF5+ux5XuaHWqtH6y1Hq21Xo6ta/1XtdafBPBpAD+2aDbn8T8G4OFSytWLTe8EcDsOyfXHlgn39lLKqxbPEsd/KK6/YLfr/UkA/2KxOvd2AF+hybcWHLBj7YcB3A3gPgD/dtOOvpGx/n1sUdMvAvjC4t8PY8tPczOAexZ/z9n0WDvO5R0APrX4fCWA/wvgXgD/HcDLNz2+xrivA3Dr4h78DwBnH6brD+BXANwJ4DYA/w3Ay+d8/QH8Ebb8Yd/CFiN6727XG1um3G8vfstfwtbq49rGksrvRCIxO6TyO5FIzA75YkokErNDvpgSicTskC+mRCIxO+SLKZFIzA75YkokErNDvpgSicTskC+mRCIxO/x/sTkhqvLQICkAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Load Neurological Convention (RAS) data\n",
"filename = os.path.join(cwd, 'data/nifti1/avg152T1_RL_nifti.nii.gz') \n",
"\n",
"# Load file with NiBabel\n",
"nb_img = nib.load(filename)\n",
"nb_data = nb_img.get_fdata()\n",
"\n",
"N0 = copy.deepcopy(nb_data[:,:,50]) # Example slide\n",
"\n",
"# Display data matrix (NiBabel)\n",
"plt.figure()\n",
"display('NiBabel (Display = M(row,column)):')\n",
"plt.imshow(N0, cmap=\"gray\")\n",
"plt.show()\n",
"\n",
"# Example, remove part of the data\n",
"N1 = copy.deepcopy(N0)\n",
"N1[20:60,:] = 0\n",
"plt.figure()\n",
"plt.imshow(N1, cmap=\"gray\")\n",
"plt.show()\n",
"\n",
"# Load file with SimpleITK\n",
"import SimpleITK as sitk\n",
"\n",
"reader = sitk.ImageFileReader()\n",
"reader.SetImageIO(\"NiftiImageIO\")\n",
"reader.SetFileName(filename)\n",
"itk_img = reader.Execute()\n",
"itk_data = sitk.GetArrayFromImage(itk_img)\n",
"\n",
"I0 = copy.deepcopy(itk_data[:,:,50])\n",
"\n",
"# Display data matrix (SimpleITK)\n",
"plt.figure()\n",
"display('SimpleITK (Display = M(row,column)):')\n",
"plt.imshow(I0, cmap=\"gray\")\n",
"plt.show()\n",
"\n",
"# LPS to RAS\n",
"I2 = copy.deepcopy(itk_data.T)[:,:,50]\n",
"\n",
" # Display data matrix (SimpleITK)\n",
"display('Remember that SimpleITK uses LPS convention, while NiBabel RAS')\n",
"display('To have the data in the same orientation, you need to transpose the data')\n",
"plt.figure()\n",
"plt.imshow(I2, cmap=\"gray\")\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.1"
}
},
"nbformat": 4,
"nbformat_minor": 4
}