{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":71549,"databundleVersionId":8561470,"sourceType":"competition"},{"sourceId":8488152,"sourceType":"datasetVersion","datasetId":2725849}],"dockerImageVersionId":30527,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# RSNA2024 Images with Lesions Slide Show \n","metadata":{"papermill":{"duration":0.006229,"end_time":"2022-12-19T12:04:21.972985","exception":false,"start_time":"2022-12-19T12:04:21.966756","status":"completed"},"tags":[]}},{"cell_type":"code","source":"!pip install -U pylibjpeg pylibjpeg-openjpeg pylibjpeg-libjpeg pydicom python-gdcm","metadata":{"_kg_hide-output":true,"papermill":{"duration":21.850887,"end_time":"2022-12-19T12:04:43.837453","exception":false,"start_time":"2022-12-19T12:04:21.986566","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2024-05-23T16:55:07.404978Z","iopub.execute_input":"2024-05-23T16:55:07.405418Z","iopub.status.idle":"2024-05-23T16:55:09.984411Z","shell.execute_reply.started":"2024-05-23T16:55:07.405383Z","shell.execute_reply":"2024-05-23T16:55:09.983116Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"    !pip install pylibjpeg --no-index --find-links=file:///kaggle/input/read-dicom-set\n    !pip install pylibjpeg-openjpeg --no-index --find-links=file:///kaggle/input/read-dicom-set\n    !pip install pylibjpeg-libjpeg --no-index --find-links=file:///kaggle/input/read-dicom-set\n    !pip install pydicom --no-index --find-links=file:///kaggle/input/read-dicom-set\n    !pip install python-gdcm --no-index --find-links=file:///kaggle/input/read-dicom-set\n    !pip install dicomsdl --no-index --find-links=file:///kaggle/input/read-dicom-set","metadata":{"execution":{"iopub.status.busy":"2023-08-06T05:37:42.467445Z","iopub.execute_input":"2023-08-06T05:37:42.468038Z","iopub.status.idle":"2023-08-06T05:39:13.370541Z","shell.execute_reply.started":"2023-08-06T05:37:42.468003Z","shell.execute_reply":"2023-08-06T05:39:13.369002Z"}}},{"cell_type":"code","source":"!pip install natsort","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:09.987450Z","iopub.execute_input":"2024-05-23T16:55:09.987951Z","iopub.status.idle":"2024-05-23T16:55:20.988008Z","shell.execute_reply.started":"2024-05-23T16:55:09.987899Z","shell.execute_reply":"2024-05-23T16:55:20.986472Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport os\nimport cv2\nfrom tqdm import tqdm\nimport matplotlib.pyplot as plt\nimport pylibjpeg\nfrom libjpeg import decode\nimport pydicom as dicom\nfrom pydicom import dcmread\nfrom pydicom.data import get_testdata_file\nfrom pydicom.pixel_data_handlers.util import apply_voi_lut\nfrom tensorflow.keras.preprocessing.image import load_img, img_to_array\nfrom natsort import natsorted","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_kg_hide-output":true,"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","papermill":{"duration":8.231928,"end_time":"2022-12-19T12:04:52.078417","exception":false,"start_time":"2022-12-19T12:04:43.846489","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2024-05-23T16:55:20.989781Z","iopub.execute_input":"2024-05-23T16:55:20.990172Z","iopub.status.idle":"2024-05-23T16:55:20.997249Z","shell.execute_reply.started":"2024-05-23T16:55:20.990136Z","shell.execute_reply":"2024-05-23T16:55:20.996222Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train=pd.read_csv('/kaggle/input/rsna-2024-lumbar-spine-degenerative-classification/train.csv')\nprint(train.columns.tolist())\ndisplay(train.info())","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:20.999876Z","iopub.execute_input":"2024-05-23T16:55:21.000202Z","iopub.status.idle":"2024-05-23T16:55:21.054393Z","shell.execute_reply.started":"2024-05-23T16:55:21.000175Z","shell.execute_reply":"2024-05-23T16:55:21.053334Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cols=['spinal_canal_stenosis_l1_l2', 'spinal_canal_stenosis_l2_l3', 'spinal_canal_stenosis_l3_l4', 'spinal_canal_stenosis_l4_l5', 'spinal_canal_stenosis_l5_s1', 'left_neural_foraminal_narrowing_l1_l2', 'left_neural_foraminal_narrowing_l2_l3', 'left_neural_foraminal_narrowing_l3_l4', 'left_neural_foraminal_narrowing_l4_l5', 'left_neural_foraminal_narrowing_l5_s1', 'right_neural_foraminal_narrowing_l1_l2', 'right_neural_foraminal_narrowing_l2_l3', 'right_neural_foraminal_narrowing_l3_l4', 'right_neural_foraminal_narrowing_l4_l5', 'right_neural_foraminal_narrowing_l5_s1', 'left_subarticular_stenosis_l1_l2', 'left_subarticular_stenosis_l2_l3', 'left_subarticular_stenosis_l3_l4', 'left_subarticular_stenosis_l4_l5', 'left_subarticular_stenosis_l5_s1', 'right_subarticular_stenosis_l1_l2', 'right_subarticular_stenosis_l2_l3', 'right_subarticular_stenosis_l3_l4', 'right_subarticular_stenosis_l4_l5', 'right_subarticular_stenosis_l5_s1']\nfor col in cols:\n    print(col,train[col].unique().tolist())","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:21.056211Z","iopub.execute_input":"2024-05-23T16:55:21.056674Z","iopub.status.idle":"2024-05-23T16:55:21.068956Z","shell.execute_reply.started":"2024-05-23T16:55:21.056631Z","shell.execute_reply":"2024-05-23T16:55:21.067703Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for col in cols:\n    print(col,train[train[col]=='Severe']['study_id'].tolist()[0:3])","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:21.070291Z","iopub.execute_input":"2024-05-23T16:55:21.070795Z","iopub.status.idle":"2024-05-23T16:55:21.106640Z","shell.execute_reply.started":"2024-05-23T16:55:21.070754Z","shell.execute_reply":"2024-05-23T16:55:21.105221Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"display(train[train['study_id']==52397721].T)\nfor i in range(len(cols)):\n    if train.iloc[17,i+1]=='Severe':\n        print(cols[i])\n    ","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:21.108294Z","iopub.execute_input":"2024-05-23T16:55:21.108638Z","iopub.status.idle":"2024-05-23T16:55:21.123720Z","shell.execute_reply.started":"2024-05-23T16:55:21.108611Z","shell.execute_reply":"2024-05-23T16:55:21.122624Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### spinal_canal_stenosis\nSpinal canal stenosis is a condition characterized by the narrowing of the spaces within the spine, which can put pressure on the spinal cord and the nerves that travel through the spine. \n### left_subarticular_stenosis\nLeft subarticular stenosis refers to the narrowing of the spinal canal or neural foramen on the left side, specifically in the subarticular region (beneath the facet joints, where the nerve roots exit the spinal canal).\n### left_neural_foraminal_narrowing\nLeft neural foraminal narrowing, also known as left foraminal stenosis, refers to the reduction in the size of the neural foramen on the left side of the spine. ","metadata":{}},{"cell_type":"markdown","source":"# In this case, lesions exist between L2 and L5.\nThe term \"lumbar\" refers to the lower part of the spine or back. The lumbar spine consists of five vertebrae, labeled L1 through L5, which are situated between the thoracic vertebrae and the sacral vertebrae. ","metadata":{}},{"cell_type":"code","source":"dir0='/kaggle/input/rsna-2024-lumbar-spine-degenerative-classification/train_images/52397721/'\nprint(os.listdir(dir0))","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:21.125400Z","iopub.execute_input":"2024-05-23T16:55:21.125895Z","iopub.status.idle":"2024-05-23T16:55:21.132466Z","shell.execute_reply.started":"2024-05-23T16:55:21.125855Z","shell.execute_reply":"2024-05-23T16:55:21.131620Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_series=pd.read_csv('/kaggle/input/rsna-2024-lumbar-spine-degenerative-classification/train_series_descriptions.csv')\ndisplay(train_series[train_series['series_id']==2452297573])\ndisplay(train_series[train_series['series_id']==2770638094])\ndisplay(train_series[train_series['series_id']==3220885418])","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:21.133401Z","iopub.execute_input":"2024-05-23T16:55:21.133708Z","iopub.status.idle":"2024-05-23T16:55:21.168877Z","shell.execute_reply.started":"2024-05-23T16:55:21.133681Z","shell.execute_reply":"2024-05-23T16:55:21.167638Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Sagittal T2/STIR","metadata":{}},{"cell_type":"code","source":"train_label=pd.read_csv('/kaggle/input/rsna-2024-lumbar-spine-degenerative-classification/train_label_coordinates.csv')\ntrain_label[train_label['series_id']==2452297573]","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:21.172755Z","iopub.execute_input":"2024-05-23T16:55:21.173122Z","iopub.status.idle":"2024-05-23T16:55:21.255359Z","shell.execute_reply.started":"2024-05-23T16:55:21.173091Z","shell.execute_reply":"2024-05-23T16:55:21.254192Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Sagittal T1","metadata":{}},{"cell_type":"code","source":"train_label=pd.read_csv('/kaggle/input/rsna-2024-lumbar-spine-degenerative-classification/train_label_coordinates.csv')\ntrain_label[train_label['series_id']==2770638094]","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:21.256901Z","iopub.execute_input":"2024-05-23T16:55:21.257208Z","iopub.status.idle":"2024-05-23T16:55:21.341210Z","shell.execute_reply.started":"2024-05-23T16:55:21.257183Z","shell.execute_reply":"2024-05-23T16:55:21.340142Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Axial T2","metadata":{}},{"cell_type":"code","source":"train_label=pd.read_csv('/kaggle/input/rsna-2024-lumbar-spine-degenerative-classification/train_label_coordinates.csv')\ntrain_label[train_label['series_id']==3220885418]","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:21.342662Z","iopub.execute_input":"2024-05-23T16:55:21.342998Z","iopub.status.idle":"2024-05-23T16:55:21.428100Z","shell.execute_reply.started":"2024-05-23T16:55:21.342969Z","shell.execute_reply":"2024-05-23T16:55:21.426744Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"    spinal_canal_stenosi L2,L3,L4 are seen \n    in Sagittal T2/STIR 2452297573\n    \n    left_subarticular_stenosis L4,L5 are seen \n    in Sagittal T1 2770638094 and Axial T2 3220885418\n    \n    right_subarticular_stenosis L3,L4,L5 are seen \n    in Sagittal T1 2770638094 and Axial T2 3220885418","metadata":{}},{"cell_type":"code","source":"paths1=[]\nfor dirname, _, filenames in os.walk(os.path.join(dir0,'2452297573')):\n    for filename in filenames:\n        paths1+=[(os.path.join(dirname, filename))]\npaths2=[]\nfor dirname, _, filenames in os.walk(os.path.join(dir0,'2770638094')):\n    for filename in filenames:\n        paths2+=[(os.path.join(dirname, filename))]\npaths3=[]\nfor dirname, _, filenames in os.walk(os.path.join(dir0,'3220885418')):\n    for filename in filenames:\n        paths3+=[(os.path.join(dirname, filename))]\n        \npaths1=natsorted(paths1)\npaths2=natsorted(paths2)\npaths3=natsorted(paths3)","metadata":{"_kg_hide-output":true,"papermill":{"duration":73.173455,"end_time":"2022-12-19T12:06:05.261398","exception":false,"start_time":"2022-12-19T12:04:52.087943","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2024-05-23T16:55:21.430032Z","iopub.execute_input":"2024-05-23T16:55:21.430778Z","iopub.status.idle":"2024-05-23T16:55:21.443872Z","shell.execute_reply.started":"2024-05-23T16:55:21.430744Z","shell.execute_reply":"2024-05-23T16:55:21.442736Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Read DICOM and transferred to PNG","metadata":{"papermill":{"duration":0.007921,"end_time":"2022-12-19T12:06:08.008874","exception":false,"start_time":"2022-12-19T12:06:08.000953","status":"completed"},"tags":[]}},{"cell_type":"code","source":"def prepare_dataset(paths):\n    dataset=[]\n\n    for i,path in enumerate(paths):\n        img=dicom.dcmread(path,force=True)\n        pip=img.PhotometricInterpretation\n\n        data=img.pixel_array\n        data=data-np.min(data)\n        if np.max(data) != 0:\n            data=data/np.max(data)\n        data=(data*255).astype(np.uint8)  \n        data=cv2.cvtColor(data,cv2.COLOR_GRAY2RGB)\n        data=cv2.cvtColor(data,cv2.COLOR_BGR2GRAY)\n        #data=cv2.resize(data,dsize=(224,224)) # to plot x,y, do not resize the images\n        if pip=='MONOCHROME2':\n            data=255-data\n        ps=path.split('/')[-4:]\n        newfile=ps[-3]+'_'+ps[-2]+'_'+ps[-1][0:-4].zfill(4)+'.png'\n        cv2.imwrite(newfile,data)\n        if data.max()>0:\n            dataset+=[(newfile,data)]\n\n    return dataset\n","metadata":{"papermill":{"duration":28474.854895,"end_time":"2022-12-19T20:00:42.873706","exception":false,"start_time":"2022-12-19T12:06:08.018811","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2024-05-23T16:55:21.445618Z","iopub.execute_input":"2024-05-23T16:55:21.446779Z","iopub.status.idle":"2024-05-23T16:55:21.455543Z","shell.execute_reply.started":"2024-05-23T16:55:21.446741Z","shell.execute_reply":"2024-05-23T16:55:21.454144Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"dataset1=prepare_dataset(paths1)\ndataset2=prepare_dataset(paths2)\ndataset3=prepare_dataset(paths3)","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:21.457179Z","iopub.execute_input":"2024-05-23T16:55:21.457623Z","iopub.status.idle":"2024-05-23T16:55:23.369927Z","shell.execute_reply.started":"2024-05-23T16:55:21.457593Z","shell.execute_reply":"2024-05-23T16:55:23.368513Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"images1 = [data[1] for data in dataset1]\nimages2 = [data[1] for data in dataset2]\nimages3 = [data[1] for data in dataset3]\n","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:23.371243Z","iopub.execute_input":"2024-05-23T16:55:23.371579Z","iopub.status.idle":"2024-05-23T16:55:23.377277Z","shell.execute_reply.started":"2024-05-23T16:55:23.371552Z","shell.execute_reply":"2024-05-23T16:55:23.376084Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Slide Show","metadata":{"papermill":{"duration":0.010102,"end_time":"2022-12-19T20:00:42.894991","exception":false,"start_time":"2022-12-19T20:00:42.884889","status":"completed"},"tags":[]}},{"cell_type":"code","source":"from matplotlib import animation, rc\nrc('animation', html='jshtml')\n\ndef create_animation(ims):    \n    fig=plt.figure(figsize=(4,4))\n    #im=ims[0]\n    im=plt.imshow(cv2.cvtColor(ims[0],cv2.COLOR_BGR2RGB))\n    text = plt.text(0.05, 0.05, f'Slide {1}', transform=fig.transFigure, fontsize=14, color='blue')\n    def animate_func(i):\n        im.set_array(cv2.cvtColor(ims[i],cv2.COLOR_BGR2RGB))\n        text.set_text(f'Slide {i+1}')        \n        return [im] \n    plt.axis('off')\n    plt.gray()\n    plt.close()    \n\n    return animation.FuncAnimation(fig, animate_func, frames=len(ims), interval=1000//10)","metadata":{"papermill":{"duration":0.064293,"end_time":"2022-12-19T20:00:42.971953","exception":false,"start_time":"2022-12-19T20:00:42.90766","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2024-05-23T16:55:23.379301Z","iopub.execute_input":"2024-05-23T16:55:23.379811Z","iopub.status.idle":"2024-05-23T16:55:23.389745Z","shell.execute_reply.started":"2024-05-23T16:55:23.379770Z","shell.execute_reply":"2024-05-23T16:55:23.388803Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Sagittal T2/STIR","metadata":{}},{"cell_type":"code","source":"create_animation(images1)","metadata":{"papermill":{"duration":709.991665,"end_time":"2022-12-19T20:12:33.038611","exception":false,"start_time":"2022-12-19T20:00:43.046946","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2024-05-23T16:55:23.391042Z","iopub.execute_input":"2024-05-23T16:55:23.392130Z","iopub.status.idle":"2024-05-23T16:55:25.116990Z","shell.execute_reply.started":"2024-05-23T16:55:23.392096Z","shell.execute_reply":"2024-05-23T16:55:25.115666Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"XY=train_label[train_label['series_id']==2452297573][train_label['instance_number']==9].iloc[:,5:7]\ndisplay(XY)","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:25.118717Z","iopub.execute_input":"2024-05-23T16:55:25.119313Z","iopub.status.idle":"2024-05-23T16:55:25.132871Z","shell.execute_reply.started":"2024-05-23T16:55:25.119280Z","shell.execute_reply":"2024-05-23T16:55:25.131871Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# instance_number 9\n\nplt.imshow(images1[9])\nfor i in range(len(XY)):\n    x,y=int(XY.iloc[i,0]),int(XY.iloc[i,1])\n    plt.scatter(x,y, color='red', s=50) \nplt.show()","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:25.134869Z","iopub.execute_input":"2024-05-23T16:55:25.135366Z","iopub.status.idle":"2024-05-23T16:55:25.482910Z","shell.execute_reply.started":"2024-05-23T16:55:25.135323Z","shell.execute_reply":"2024-05-23T16:55:25.481741Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Sagittal T1","metadata":{}},{"cell_type":"code","source":"create_animation(images2)","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:25.484671Z","iopub.execute_input":"2024-05-23T16:55:25.485006Z","iopub.status.idle":"2024-05-23T16:55:27.146605Z","shell.execute_reply.started":"2024-05-23T16:55:25.484978Z","shell.execute_reply":"2024-05-23T16:55:27.145262Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"XY=train_label[train_label['series_id']==2770638094][train_label['instance_number']==5].iloc[:,5:7]\ndisplay(XY)","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:27.148078Z","iopub.execute_input":"2024-05-23T16:55:27.148653Z","iopub.status.idle":"2024-05-23T16:55:27.162858Z","shell.execute_reply.started":"2024-05-23T16:55:27.148616Z","shell.execute_reply":"2024-05-23T16:55:27.161823Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# instance_number 5\nplt.imshow(images2[5])\nfor i in range(len(XY)):\n    x,y=int(XY.iloc[i,0]),int(XY.iloc[i,1])\n    plt.scatter(x,y, color='red', s=50) \nplt.show()","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:27.164361Z","iopub.execute_input":"2024-05-23T16:55:27.164720Z","iopub.status.idle":"2024-05-23T16:55:27.472604Z","shell.execute_reply.started":"2024-05-23T16:55:27.164689Z","shell.execute_reply":"2024-05-23T16:55:27.471337Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Axial T2","metadata":{}},{"cell_type":"code","source":"create_animation(images3)","metadata":{"papermill":{"duration":0.693514,"end_time":"2022-12-19T20:12:35.819034","exception":false,"start_time":"2022-12-19T20:12:35.12552","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2024-05-23T16:55:27.474011Z","iopub.execute_input":"2024-05-23T16:55:27.475109Z","iopub.status.idle":"2024-05-23T16:55:33.514955Z","shell.execute_reply.started":"2024-05-23T16:55:27.475071Z","shell.execute_reply":"2024-05-23T16:55:33.513547Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"XY=train_label[train_label['series_id']==3220885418][train_label['instance_number']==21].iloc[:,5:7]\ndisplay(XY)","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:33.516811Z","iopub.execute_input":"2024-05-23T16:55:33.518022Z","iopub.status.idle":"2024-05-23T16:55:33.537952Z","shell.execute_reply.started":"2024-05-23T16:55:33.517974Z","shell.execute_reply":"2024-05-23T16:55:33.537007Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# instance_number 21\nplt.imshow(images3[21])\nfor i in range(len(XY)):\n    x,y=int(XY.iloc[i,0]),int(XY.iloc[i,1])\n    plt.scatter(x,y, color='red', s=50) \nplt.show()","metadata":{"execution":{"iopub.status.busy":"2024-05-23T16:55:33.539205Z","iopub.execute_input":"2024-05-23T16:55:33.540196Z","iopub.status.idle":"2024-05-23T16:55:33.937360Z","shell.execute_reply.started":"2024-05-23T16:55:33.540156Z","shell.execute_reply":"2024-05-23T16:55:33.936064Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}