1348 lines (1347 with data), 154.6 kB
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "304f6b0b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Looking in indexes: https://pypi.org/simple, https://pip.repos.neuron.amazonaws.com\n",
"Collecting pydicom\n",
" Downloading pydicom-2.3.0-py3-none-any.whl (2.0 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m17.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m:00:01\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: PyAthena in /home/ec2-user/anaconda3/envs/python3/lib/python3.8/site-packages (2.9.3)\n",
"Requirement already satisfied: boto3>=1.4.4 in /home/ec2-user/anaconda3/envs/python3/lib/python3.8/site-packages (from PyAthena) (1.23.10)\n",
"Requirement already satisfied: botocore>=1.5.52 in /home/ec2-user/anaconda3/envs/python3/lib/python3.8/site-packages (from PyAthena) (1.26.10)\n",
"Requirement already satisfied: tenacity>=4.1.0 in /home/ec2-user/anaconda3/envs/python3/lib/python3.8/site-packages (from PyAthena) (8.0.1)\n",
"Requirement already satisfied: jmespath<2.0.0,>=0.7.1 in /home/ec2-user/anaconda3/envs/python3/lib/python3.8/site-packages (from boto3>=1.4.4->PyAthena) (0.10.0)\n",
"Requirement already satisfied: s3transfer<0.6.0,>=0.5.0 in /home/ec2-user/anaconda3/envs/python3/lib/python3.8/site-packages (from boto3>=1.4.4->PyAthena) (0.5.2)\n",
"Requirement already satisfied: urllib3<1.27,>=1.25.4 in /home/ec2-user/anaconda3/envs/python3/lib/python3.8/site-packages (from botocore>=1.5.52->PyAthena) (1.26.8)\n",
"Requirement already satisfied: python-dateutil<3.0.0,>=2.1 in /home/ec2-user/anaconda3/envs/python3/lib/python3.8/site-packages (from botocore>=1.5.52->PyAthena) (2.8.2)\n",
"Requirement already satisfied: six>=1.5 in /home/ec2-user/anaconda3/envs/python3/lib/python3.8/site-packages (from python-dateutil<3.0.0,>=2.1->botocore>=1.5.52->PyAthena) (1.16.0)\n",
"Installing collected packages: pydicom\n",
"Successfully installed pydicom-2.3.0\n",
"\u001b[33mWARNING: You are using pip version 22.0.4; however, version 22.1.2 is available.\n",
"You should consider upgrading via the '/home/ec2-user/anaconda3/envs/python3/bin/python -m pip install --upgrade pip' command.\u001b[0m\u001b[33m\n",
"\u001b[0m"
]
}
],
"source": [
"import sys\n",
"!{sys.executable} -m pip install pydicom PyAthena"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "3bdb2363",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Matplotlib is building the font cache; this may take a moment.\n"
]
}
],
"source": [
"import boto3\n",
"import tempfile\n",
"from tqdm.notebook import tqdm as with_progress_bar\n",
"from concurrent.futures import ProcessPoolExecutor\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"import scipy.stats\n",
"from sklearn import linear_model\n",
"import matplotlib.pyplot as plt\n",
"\n",
"import pydicom #!{sys.executable} -m pip install pydicom\n",
"\n",
"from pyathena import connect #!{sys.executable} -m pip install PyAthena\n",
"from pyathena.cursor import DictCursor"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "627c6367",
"metadata": {},
"outputs": [],
"source": [
"s3 = boto3.client(\"s3\")\n",
"cfn = boto3.client(\"cloudformation\")"
]
},
{
"cell_type": "markdown",
"id": "4cb90f72",
"metadata": {},
"source": [
"# Background\n",
"\n",
"Modern clinical analysis projects may include data from several different modalities—genomics data, clinical observations, and imaging data may all be part of a patient’s case. Unfortunately, these data types are often kept in different formats and located in different places, so gathering and managing them in a coherent can be challenging. For example, NCI has several open datasets containing genomics data, patient clinical data, and imaging data. Some of this data is accessible through The Cancer Genome Atlas ([TCGA](https://www.cancer.gov/about-nci/organization/ccg/research/structural-genomics/tcga)) and associated API's, and the imaging data is stored in The Cancer Imaging Archive ([TCIA](https://wiki.cancerimagingarchive.net/)). The data is linked by the unique identifier assigned to patients during the studies, but it is difficult to link datasets with distinct API's.\n",
"Here, we used [AWS Glue](https://aws.amazon.com/glue/) ETL jobs to organize this disparate data into S3 buckets. \n",
"\n",
"Once in S3, we can easily link the datasets using [AWS Athena](https://aws.amazon.com/athena/) to query across different tables and pull information for analysis.\n",
"\n",
"What follows is a brief demonstration of how a researcher might build a cohort and use multimodal data for a analysis process."
]
},
{
"cell_type": "markdown",
"id": "9d54b020",
"metadata": {},
"source": [
"# Basic Athena queries for multimodal cohort building\n",
"\n",
"We have tables crawled by glue and stored in `s3` buckets containing patient test data and patient clinical metadata. First we connect to the database and create an Athena cursor to query. "
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "95935192",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"us-west-1\n",
"Project: GenomicsAnalysis\n",
"Database: genomicsanalysis\n",
"Work Group: genomicsanalysis-us-west-1\n",
"S3 bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n"
]
}
],
"source": [
"import os, jmespath\n",
"\n",
"session = boto3.session.Session()\n",
"region = session.region_name\n",
"print(region)\n",
"\n",
"project_name = os.environ.get('RESOURCE_PREFIX')\n",
"database_name = project_name.lower()\n",
"work_group_name = project_name.lower() + '-' + region\n",
"print('Project:', project_name)\n",
"print('Database:', database_name)\n",
"print('Work Group:', work_group_name)\n",
"\n",
"resources = cfn.describe_stacks(StackName='{0}-Pipeline'.format(project_name))\n",
"query = 'Stacks[].Outputs[?OutputKey==`DataLakeBucket`].OutputValue'\n",
"data_lake_bucket = path = jmespath.search(query, resources)[0][0]\n",
"print('S3 bucket:', data_lake_bucket)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "481267a4",
"metadata": {},
"outputs": [],
"source": [
"conn = connect(s3_staging_dir=f's3://{data_lake_bucket}/query-output',\n",
" region_name=region,\n",
" schema_name=database_name)\n",
"cursor = conn.cursor(DictCursor, work_group=work_group_name)"
]
},
{
"cell_type": "markdown",
"id": "8c61595e",
"metadata": {},
"source": [
"Next, we will count the number of unique patients in our full dataset:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "070836f6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"There are 1026 patients.\n"
]
}
],
"source": [
"STATEMENT = 'SELECT COUNT(DISTINCT bcr_patient_barcode) AS all_patients FROM clinical_patient;'\n",
"query_res = cursor.execute(STATEMENT).fetchall()\n",
"print(f\"There are {query_res[0]['all_patients']} patients.\")"
]
},
{
"cell_type": "markdown",
"id": "8354a850",
"metadata": {},
"source": [
"Let's quickly look at the age distribution of our patients. If no age is recorded for a patient, we'll set them to -1 to distinguish them from the main age distribution."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "a632b7c5",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"STATEMENT = 'SELECT age_at_initial_pathologic_diagnosis AS dx_age FROM clinical_patient;'\n",
"query_res = cursor.execute(STATEMENT).fetchall()\n",
"ages = []\n",
"for row in query_res:\n",
" try:\n",
" ages.append(int(row['dx_age']))\n",
" except ValueError:\n",
" ages.append(-1)\n",
"plt.hist(ages, bins=16)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "32cdff13",
"metadata": {},
"source": [
"## Narrowing the cohort\n",
"\n",
"Let's now look to see how many patients have tumor mutation data recorded in their clinical history. Our clinical data has records for EGFR, KRAS, and ALK-EML4 translocation status, but for the purposes of this analysis, let's focus only on EGFR."
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "defa9a58",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"egfr_mutation_status egfr_mutation_identified_type\n",
"NO [Not Available] 474\n",
"[Not Available] [Not Available] 395\n",
"YES [Not Available] 76\n",
"[Unknown] [Not Available] 55\n",
"YES Other 10\n",
" Exon 19 Deletion 9\n",
" L858R 4\n",
"NO Other 1\n",
"YES L861Q 1\n",
" T790M 1\n",
"dtype: int64"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"STATEMENT = \"\"\"\n",
"SELECT egfr_mutation_status, egfr_mutation_identified_type\n",
"FROM clinical_patient\n",
"\"\"\"\n",
"query_res = cursor.execute(STATEMENT).fetchall()\n",
"egfr_status = pd.DataFrame(query_res)\n",
"egfr_status.value_counts()"
]
},
{
"cell_type": "markdown",
"id": "f8bd85da",
"metadata": {},
"source": [
"It appears that 450 patients out of our full set of 1026 do not have EGFR mutation status recorded in their clinical history. Additionally, most of the patients who have an identified EGFR mutation do not have any data available about their mutation type. We will try to enrich that data by searching for specific EGFR mutations in the `tcga_mutation` table."
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "b311c0ac",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"egfr_mutation_status egfr_mutation_identified_type variant_type\n",
"NO [Not Available] [SNP] 13\n",
"[Not Available] [Not Available] [DEL] 11\n",
"NO [Not Available] [DEL] 10\n",
"[Not Available] [Not Available] [SNP] 9\n",
"YES Exon 19 Deletion [DEL] 7\n",
" L858R [SNP] 3\n",
" Exon 19 Deletion [SNP] 1\n",
" L861Q [SNP] 1\n",
" Other [DEL] 1\n",
" T790M [SNP] 1\n",
"[Unknown] [Not Available] [SNP] 1\n",
"dtype: int64"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"STATEMENT = \"\"\"\n",
"WITH egfr_mutation_type AS (\n",
" SELECT submitter_id, array_agg(distinct variant_type) as variant_type, \n",
" array_agg(distinct hgvsp_short) as hgvsp_short\n",
" FROM tcga_mutation\n",
" WHERE hugo_symbol = 'EGFR'\n",
" AND (exon_number = '19/28' and variant_type = 'DEL') \n",
" OR (hgvsp_short = 'p.L858R')\n",
" OR (hgvsp_short = 'p.T790M')\n",
" OR (hgvsp_short = 'p.L861Q')\n",
" GROUP BY submitter_id\n",
")\n",
"\n",
"SELECT bcr_patient_barcode, egfr_mutation_status, egfr_mutation_identified_type,\n",
" egfr_mutation_type.variant_type, egfr_mutation_type.hgvsp_short\n",
"FROM clinical_patient\n",
"LEFT JOIN egfr_mutation_type ON bcr_patient_barcode = egfr_mutation_type.submitter_id\n",
"\"\"\"\n",
"egfr_status_enhanced = pd.DataFrame(cursor.execute(STATEMENT).fetchall())\n",
"egfr_status_enhanced[[\"egfr_mutation_status\", \"egfr_mutation_identified_type\", \"variant_type\"]].value_counts()"
]
},
{
"cell_type": "markdown",
"id": "2f84a232",
"metadata": {},
"source": [
"With the mutation data, we're able to identify 21 additional patients with either Exon 19 Deletion or one of the three common SNPs. Interestingly, 23 additional patients were identified as having an EGFR mutation through the mutation data, who were recorded as having no EGFR mutation in their clinical history.\n",
"\n",
"Let's save the list of patient IDs having EGFR mutations for further analysis."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "674d6007",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"We have 58 patients in our cohort.\n"
]
}
],
"source": [
"egfr_snp_mut = egfr_status_enhanced[egfr_status_enhanced.variant_type.isin(('[SNP]','[DEL]'))]\n",
"print(f'We have {len(egfr_snp_mut)} patients in our cohort.')"
]
},
{
"cell_type": "markdown",
"id": "e7c6bfc4",
"metadata": {},
"source": [
"## Image analysis\n",
"\n",
"Let's see how many patients in our small cohort have image data available.\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "3a781ada",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>_col0</th>\n",
" <th>patient_id</th>\n",
" <th>series_uid</th>\n",
" <th>description</th>\n",
" <th>mod</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-J2-8192</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112...</td>\n",
" <td>SAG CHEST</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-J2-8192</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.3983.9002.138321164626...</td>\n",
" <td>SOFT TISSUE</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.241095233362...</td>\n",
" <td>coronals</td>\n",
" <td>PT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-4628</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.101564030988...</td>\n",
" <td>LOCALIZER</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-50-6591</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.6450.9002.160846153697...</td>\n",
" <td>Topogram</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-50-6591</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.6450.9002.846229601736...</td>\n",
" <td>CT Spiral 5.0 B70s</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-50-6591</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.6450.9002.198989343210...</td>\n",
" <td>FUSED PET/CT</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.570696184372...</td>\n",
" <td>Reformatted</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.500879414859...</td>\n",
" <td>PE STUDY ST</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.904457022040...</td>\n",
" <td>CT WB 5.0 B30f</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.633911416262...</td>\n",
" <td>PET WB</td>\n",
" <td>PT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-4628</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.631687863423...</td>\n",
" <td>LOCALIZER</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-J2-8192</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.3983.9002.126841153385...</td>\n",
" <td>CHST COR</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.126815156494...</td>\n",
" <td>Topogram 0.6 T20s</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.704097504641...</td>\n",
" <td>Chest 5.0 B31f</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.209868708527...</td>\n",
" <td>LUNG</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.188001454543...</td>\n",
" <td>CT 5.0 B40s</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-4628</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.168412371278...</td>\n",
" <td>unenhanced</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-4628</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.202400537682...</td>\n",
" <td>LOCALIZER</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-J2-8192</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.3983.9002.160354988389...</td>\n",
" <td>LUNG</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-J2-8192</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.3983.9002.319652475863...</td>\n",
" <td>Processed Images</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.159774352322...</td>\n",
" <td>Recon 2: RENAL STONE STUDY</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.251867863723...</td>\n",
" <td>SCOUT</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.300289362965...</td>\n",
" <td>Reformatted</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.416884313303...</td>\n",
" <td>PET WB-uncorrected</td>\n",
" <td>PT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-4628</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.320536261464...</td>\n",
" <td>LOCALIZER</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-4628</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.210839207287...</td>\n",
" <td>LOCALIZER</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.270738505972...</td>\n",
" <td>Chest Thin Mip Coronal</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.864459481049...</td>\n",
" <td>Reformatted</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.560858650969...</td>\n",
" <td>Reformatted</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.139127263722...</td>\n",
" <td>PET WB</td>\n",
" <td>PT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.900734700813...</td>\n",
" <td>projections</td>\n",
" <td>PT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.335999811444...</td>\n",
" <td>PET WB Uncorrected</td>\n",
" <td>PT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.256607735971...</td>\n",
" <td>PROJECTIONS</td>\n",
" <td>PT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-4628</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.513003795645...</td>\n",
" <td>without contrast</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-50-6591</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.6450.9002.325710935120...</td>\n",
" <td>FUSED LUNG WINDOW</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-50-6591</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.6450.9002.243448495980...</td>\n",
" <td>DYNAMIC MODE</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-4628</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.926531525790...</td>\n",
" <td>unenhanced</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-50-6591</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.6450.9002.210914875533...</td>\n",
" <td>PET WB-uncorrected</td>\n",
" <td>PT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.157893423003...</td>\n",
" <td>SCOUT</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.305555591466...</td>\n",
" <td>CT WB 5.0 eFoV</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.554748855172...</td>\n",
" <td>CORONALS</td>\n",
" <td>PT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-50-6591</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.6450.9002.333850093573...</td>\n",
" <td>CT Spiral 5.0 B40s</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-50-6591</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.6450.9002.156462637139...</td>\n",
" <td>LOCALIZER</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-J2-8192</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.3983.9002.323310556191...</td>\n",
" <td>SCOUT</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.467784322053...</td>\n",
" <td>RENAL STONE STUDY</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.182465758586...</td>\n",
" <td>Smart Prep Series</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.135538674486...</td>\n",
" <td>THINS FOR CORONAL</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-6178</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.868226940509...</td>\n",
" <td>Reformatted</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-4628</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.433116391104...</td>\n",
" <td>without contrast</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-38-4628</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.8421.9002.257453429620...</td>\n",
" <td>without contrast</td>\n",
" <td>CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>TCGA-LUAD</td>\n",
" <td>TCGA-50-6591</td>\n",
" <td>1.3.6.1.4.1.14519.5.2.1.6450.9002.316574097062...</td>\n",
" <td>PET WB</td>\n",
" <td>PT</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" _col0 patient_id \\\n",
"0 TCGA-LUAD TCGA-J2-8192 \n",
"1 TCGA-LUAD TCGA-J2-8192 \n",
"2 TCGA-LUAD TCGA-38-6178 \n",
"3 TCGA-LUAD TCGA-38-4628 \n",
"4 TCGA-LUAD TCGA-50-6591 \n",
"5 TCGA-LUAD TCGA-50-6591 \n",
"6 TCGA-LUAD TCGA-50-6591 \n",
"7 TCGA-LUAD TCGA-38-6178 \n",
"8 TCGA-LUAD TCGA-38-6178 \n",
"9 TCGA-LUAD TCGA-38-6178 \n",
"10 TCGA-LUAD TCGA-38-6178 \n",
"11 TCGA-LUAD TCGA-38-4628 \n",
"12 TCGA-LUAD TCGA-J2-8192 \n",
"13 TCGA-LUAD TCGA-38-6178 \n",
"14 TCGA-LUAD TCGA-38-6178 \n",
"15 TCGA-LUAD TCGA-38-6178 \n",
"16 TCGA-LUAD TCGA-38-6178 \n",
"17 TCGA-LUAD TCGA-38-4628 \n",
"18 TCGA-LUAD TCGA-38-4628 \n",
"19 TCGA-LUAD TCGA-J2-8192 \n",
"20 TCGA-LUAD TCGA-J2-8192 \n",
"21 TCGA-LUAD TCGA-38-6178 \n",
"22 TCGA-LUAD TCGA-38-6178 \n",
"23 TCGA-LUAD TCGA-38-6178 \n",
"24 TCGA-LUAD TCGA-38-6178 \n",
"25 TCGA-LUAD TCGA-38-4628 \n",
"26 TCGA-LUAD TCGA-38-4628 \n",
"27 TCGA-LUAD TCGA-38-6178 \n",
"28 TCGA-LUAD TCGA-38-6178 \n",
"29 TCGA-LUAD TCGA-38-6178 \n",
"30 TCGA-LUAD TCGA-38-6178 \n",
"31 TCGA-LUAD TCGA-38-6178 \n",
"32 TCGA-LUAD TCGA-38-6178 \n",
"33 TCGA-LUAD TCGA-38-6178 \n",
"34 TCGA-LUAD TCGA-38-4628 \n",
"35 TCGA-LUAD TCGA-50-6591 \n",
"36 TCGA-LUAD TCGA-50-6591 \n",
"37 TCGA-LUAD TCGA-38-4628 \n",
"38 TCGA-LUAD TCGA-50-6591 \n",
"39 TCGA-LUAD TCGA-38-6178 \n",
"40 TCGA-LUAD TCGA-38-6178 \n",
"41 TCGA-LUAD TCGA-38-6178 \n",
"42 TCGA-LUAD TCGA-50-6591 \n",
"43 TCGA-LUAD TCGA-50-6591 \n",
"44 TCGA-LUAD TCGA-J2-8192 \n",
"45 TCGA-LUAD TCGA-38-6178 \n",
"46 TCGA-LUAD TCGA-38-6178 \n",
"47 TCGA-LUAD TCGA-38-6178 \n",
"48 TCGA-LUAD TCGA-38-6178 \n",
"49 TCGA-LUAD TCGA-38-4628 \n",
"50 TCGA-LUAD TCGA-38-4628 \n",
"51 TCGA-LUAD TCGA-50-6591 \n",
"\n",
" series_uid \\\n",
"0 1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112... \n",
"1 1.3.6.1.4.1.14519.5.2.1.3983.9002.138321164626... \n",
"2 1.3.6.1.4.1.14519.5.2.1.8421.9002.241095233362... \n",
"3 1.3.6.1.4.1.14519.5.2.1.8421.9002.101564030988... \n",
"4 1.3.6.1.4.1.14519.5.2.1.6450.9002.160846153697... \n",
"5 1.3.6.1.4.1.14519.5.2.1.6450.9002.846229601736... \n",
"6 1.3.6.1.4.1.14519.5.2.1.6450.9002.198989343210... \n",
"7 1.3.6.1.4.1.14519.5.2.1.8421.9002.570696184372... \n",
"8 1.3.6.1.4.1.14519.5.2.1.8421.9002.500879414859... \n",
"9 1.3.6.1.4.1.14519.5.2.1.8421.9002.904457022040... \n",
"10 1.3.6.1.4.1.14519.5.2.1.8421.9002.633911416262... \n",
"11 1.3.6.1.4.1.14519.5.2.1.8421.9002.631687863423... \n",
"12 1.3.6.1.4.1.14519.5.2.1.3983.9002.126841153385... \n",
"13 1.3.6.1.4.1.14519.5.2.1.8421.9002.126815156494... \n",
"14 1.3.6.1.4.1.14519.5.2.1.8421.9002.704097504641... \n",
"15 1.3.6.1.4.1.14519.5.2.1.8421.9002.209868708527... \n",
"16 1.3.6.1.4.1.14519.5.2.1.8421.9002.188001454543... \n",
"17 1.3.6.1.4.1.14519.5.2.1.8421.9002.168412371278... \n",
"18 1.3.6.1.4.1.14519.5.2.1.8421.9002.202400537682... \n",
"19 1.3.6.1.4.1.14519.5.2.1.3983.9002.160354988389... \n",
"20 1.3.6.1.4.1.14519.5.2.1.3983.9002.319652475863... \n",
"21 1.3.6.1.4.1.14519.5.2.1.8421.9002.159774352322... \n",
"22 1.3.6.1.4.1.14519.5.2.1.8421.9002.251867863723... \n",
"23 1.3.6.1.4.1.14519.5.2.1.8421.9002.300289362965... \n",
"24 1.3.6.1.4.1.14519.5.2.1.8421.9002.416884313303... \n",
"25 1.3.6.1.4.1.14519.5.2.1.8421.9002.320536261464... \n",
"26 1.3.6.1.4.1.14519.5.2.1.8421.9002.210839207287... \n",
"27 1.3.6.1.4.1.14519.5.2.1.8421.9002.270738505972... \n",
"28 1.3.6.1.4.1.14519.5.2.1.8421.9002.864459481049... \n",
"29 1.3.6.1.4.1.14519.5.2.1.8421.9002.560858650969... \n",
"30 1.3.6.1.4.1.14519.5.2.1.8421.9002.139127263722... \n",
"31 1.3.6.1.4.1.14519.5.2.1.8421.9002.900734700813... \n",
"32 1.3.6.1.4.1.14519.5.2.1.8421.9002.335999811444... \n",
"33 1.3.6.1.4.1.14519.5.2.1.8421.9002.256607735971... \n",
"34 1.3.6.1.4.1.14519.5.2.1.8421.9002.513003795645... \n",
"35 1.3.6.1.4.1.14519.5.2.1.6450.9002.325710935120... \n",
"36 1.3.6.1.4.1.14519.5.2.1.6450.9002.243448495980... \n",
"37 1.3.6.1.4.1.14519.5.2.1.8421.9002.926531525790... \n",
"38 1.3.6.1.4.1.14519.5.2.1.6450.9002.210914875533... \n",
"39 1.3.6.1.4.1.14519.5.2.1.8421.9002.157893423003... \n",
"40 1.3.6.1.4.1.14519.5.2.1.8421.9002.305555591466... \n",
"41 1.3.6.1.4.1.14519.5.2.1.8421.9002.554748855172... \n",
"42 1.3.6.1.4.1.14519.5.2.1.6450.9002.333850093573... \n",
"43 1.3.6.1.4.1.14519.5.2.1.6450.9002.156462637139... \n",
"44 1.3.6.1.4.1.14519.5.2.1.3983.9002.323310556191... \n",
"45 1.3.6.1.4.1.14519.5.2.1.8421.9002.467784322053... \n",
"46 1.3.6.1.4.1.14519.5.2.1.8421.9002.182465758586... \n",
"47 1.3.6.1.4.1.14519.5.2.1.8421.9002.135538674486... \n",
"48 1.3.6.1.4.1.14519.5.2.1.8421.9002.868226940509... \n",
"49 1.3.6.1.4.1.14519.5.2.1.8421.9002.433116391104... \n",
"50 1.3.6.1.4.1.14519.5.2.1.8421.9002.257453429620... \n",
"51 1.3.6.1.4.1.14519.5.2.1.6450.9002.316574097062... \n",
"\n",
" description mod \n",
"0 SAG CHEST CT \n",
"1 SOFT TISSUE CT \n",
"2 coronals PT \n",
"3 LOCALIZER CT \n",
"4 Topogram CT \n",
"5 CT Spiral 5.0 B70s CT \n",
"6 FUSED PET/CT CT \n",
"7 Reformatted CT \n",
"8 PE STUDY ST CT \n",
"9 CT WB 5.0 B30f CT \n",
"10 PET WB PT \n",
"11 LOCALIZER CT \n",
"12 CHST COR CT \n",
"13 Topogram 0.6 T20s CT \n",
"14 Chest 5.0 B31f CT \n",
"15 LUNG CT \n",
"16 CT 5.0 B40s CT \n",
"17 unenhanced CT \n",
"18 LOCALIZER CT \n",
"19 LUNG CT \n",
"20 Processed Images CT \n",
"21 Recon 2: RENAL STONE STUDY CT \n",
"22 SCOUT CT \n",
"23 Reformatted CT \n",
"24 PET WB-uncorrected PT \n",
"25 LOCALIZER CT \n",
"26 LOCALIZER CT \n",
"27 Chest Thin Mip Coronal CT \n",
"28 Reformatted CT \n",
"29 Reformatted CT \n",
"30 PET WB PT \n",
"31 projections PT \n",
"32 PET WB Uncorrected PT \n",
"33 PROJECTIONS PT \n",
"34 without contrast CT \n",
"35 FUSED LUNG WINDOW CT \n",
"36 DYNAMIC MODE CT \n",
"37 unenhanced CT \n",
"38 PET WB-uncorrected PT \n",
"39 SCOUT CT \n",
"40 CT WB 5.0 eFoV CT \n",
"41 CORONALS PT \n",
"42 CT Spiral 5.0 B40s CT \n",
"43 LOCALIZER CT \n",
"44 SCOUT CT \n",
"45 RENAL STONE STUDY CT \n",
"46 Smart Prep Series CT \n",
"47 THINS FOR CORONAL CT \n",
"48 Reformatted CT \n",
"49 without contrast CT \n",
"50 without contrast CT \n",
"51 PET WB PT "
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"patient_ids = '(' + ','.join(f\"'{p}'\" for p in egfr_snp_mut['bcr_patient_barcode']) + ')'\n",
"STATEMENT = \"\"\"\n",
"SELECT arbitrary(imgs.collection), arbitrary(imgs.patientid) as patient_id, imgs.seriesinstanceuid AS series_uid, \n",
" arbitrary(imgs.seriesdescription) as description, arbitrary(imgs.modality) as mod\n",
"FROM tcia_image_series imgs\n",
"WHERE imgs.patientid IN {patient_ids}\n",
"GROUP BY imgs.seriesinstanceuid\n",
"\"\"\".format(patient_ids=patient_ids)\n",
"res_all_img_study = pd.DataFrame(cursor.execute(STATEMENT).fetchall())\n",
"res_all_img_study"
]
},
{
"cell_type": "markdown",
"id": "3872d1bd",
"metadata": {},
"source": [
"To visualize the patient images, we retrieve them directly from the TCIA API to the data lake bucket, and then visualize them using Matplotlib within the notebook."
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "6f7e6c74",
"metadata": {},
"outputs": [],
"source": [
"import io\n",
"import requests\n",
"from zipfile import ZipFile\n",
"\n",
"TCIA_API = \"https://services.cancerimagingarchive.net/services/v4/TCIA/query/\"\n",
"S3_RESOURCE = boto3.resource(\"s3\")\n",
"\n",
"def get_image_stream_unzip(seriesuid, bucket_name=data_lake_bucket):\n",
" \"\"\"Get Zip file from API, unpack in memory and write to S3 bucket\"\"\"\n",
" url = TCIA_API + \"getImage\"\n",
" parameters = {\"SeriesInstanceUID\": seriesuid}\n",
" output_keys = []\n",
" with requests.get(url, params=parameters, stream=True) as req:\n",
" req.raise_for_status()\n",
" with io.BytesIO() as byte_stream:\n",
" for chunk in req.iter_content(chunk_size=10000):\n",
" byte_stream.write(chunk)\n",
" with ZipFile(byte_stream, \"r\") as zo:\n",
" list_of_files = [i for i in zo.namelist() if i.endswith(\"dcm\")]\n",
" for dcm in list_of_files:\n",
" item = zo.read(dcm)\n",
" bucket_key = f\"tcia-images/{seriesuid}/{dcm.replace('./', '')}\"\n",
" S3_RESOURCE.Bucket(bucket_name).put_object(Key=bucket_key, Body=item)\n",
" print(f\"Writing DICOM object: {bucket_key} to bucket: {bucket_name}\")\n",
" output_keys.append(bucket_key)\n",
" return output_keys\n",
"\n",
"def get_dicom_from_s3(dicom_bucket, dicom_key):\n",
" # retrieve and load the dicom file\n",
" with tempfile.TemporaryFile() as tmpf:\n",
" S3_RESOURCE.Bucket(dicom_bucket).download_fileobj(dicom_key, tmpf)\n",
" tmpf.seek(0)\n",
" dcm = pydicom.dcmread(tmpf)\n",
" return dcm\n",
" \n",
"def show_dicom(dcm):\n",
" # render a dicom using matplotlib\n",
" if len(dcm.pixel_array.shape) == 3:\n",
" pixels = dcm.pixel_array.sum(axis=0)\n",
" else:\n",
" pixels = dcm.pixel_array\n",
" \n",
" plt.figure(figsize=(6,6), dpi=100)\n",
" plt.imshow(pixels, cmap=plt.cm.gray)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "fb61f361",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/1-117.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/2-118.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/3-119.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/4-120.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/5-121.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/6-122.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/7-123.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/8-124.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/9-125.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/10-126.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/11-127.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/12-128.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/13-129.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/14-130.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/15-131.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/16-132.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/17-133.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/18-134.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/19-135.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/20-136.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/21-137.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/22-138.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/23-139.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/24-140.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/25-141.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/26-142.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/27-143.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/28-144.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/29-145.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/30-146.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/31-147.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/32-148.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/33-149.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/34-150.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/35-151.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/36-152.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/37-153.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/38-154.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/39-155.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/40-156.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/41-157.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/42-158.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/43-159.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/44-160.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/45-161.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/46-162.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/47-163.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/48-164.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/49-165.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/50-166.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/51-167.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/52-168.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/53-169.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/54-170.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/55-171.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/56-172.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/57-173.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/58-174.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/59-175.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/60-176.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/61-177.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/62-178.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/63-179.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/64-180.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/65-181.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/66-182.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/67-183.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/68-184.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/69-185.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/70-186.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/71-187.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/72-188.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/73-189.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/74-190.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/75-191.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/76-192.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/77-193.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/78-194.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/79-195.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/80-196.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/81-197.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/82-198.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/83-199.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/84-200.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/85-201.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/86-202.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/87-203.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/88-204.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/89-205.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/90-206.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/91-207.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/92-208.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/93-209.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/94-210.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/95-211.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/96-212.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/97-213.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/98-214.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/99-215.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/100-216.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/101-217.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/102-218.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/103-219.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/104-220.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/105-221.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/106-222.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/107-223.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/108-224.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/109-225.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/110-226.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/111-227.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/112-228.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/113-229.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/114-230.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/115-231.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/116-232.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/117-233.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/118-234.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/119-235.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/120-236.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/121-237.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/122-238.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/123-239.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/124-240.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/125-241.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/126-242.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/127-243.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/128-244.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/129-245.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/130-246.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/131-247.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/132-248.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/133-249.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/134-250.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/135-251.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/136-252.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/137-253.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/138-254.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/139-255.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/140-256.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/141-257.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/142-258.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/143-259.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/144-260.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/145-261.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/146-262.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/147-263.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/148-264.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/149-265.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/150-266.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/151-267.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/152-268.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/153-269.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/154-270.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/155-271.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/156-272.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/157-273.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/158-274.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/159-275.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/160-276.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/161-277.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/162-278.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/163-279.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/164-280.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/165-281.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/166-282.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/167-283.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/168-284.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/169-285.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/170-286.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/171-287.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/172-288.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/173-289.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/174-290.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/175-291.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/176-292.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/177-293.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/178-294.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/179-295.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/180-296.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/181-297.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/182-298.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/183-299.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/184-000.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/185-001.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/186-002.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/187-003.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/188-004.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/189-005.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/190-006.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/191-007.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/192-008.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/193-009.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/194-010.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/195-011.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/196-012.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/197-013.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/198-014.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/199-015.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/200-016.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/201-017.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/202-018.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/203-019.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/204-020.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/205-021.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/206-022.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/207-023.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n",
"Writing DICOM object: tcia-images/1.3.6.1.4.1.14519.5.2.1.3983.9002.224322675112552870107739342981/208-024.dcm to bucket: genomicsanalysis-pipeline-datalakebucket-tvpzhmu7lrij\n"
]
}
],
"source": [
"dicom_keys = get_image_stream_unzip(res_all_img_study['series_uid'][0])"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "ce81e0e6",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 600x600 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"show_dicom(get_dicom_from_s3(data_lake_bucket, dicom_keys[len(dicom_keys)//2]))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.9.6 64-bit",
"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.9.6"
},
"vscode": {
"interpreter": {
"hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6"
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}