{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"!pip3 install ../input/packages/dicom2nifti-2.3.0/dicom2nifti-2.3.0\n!pip3 install ../input/packages/fslpy-03.7.0-py2.py3-none-any.whl\n!pip3 install ../input/packages/isodate-0.6.0-py2.py3-none-any.whl\n!pip3 install ../input/packages/rdflib-6.0.1-py3-none-any.whl\n!pip3 install ../input/packages/prov-2.0.0-py3-none-any.whl\n!pip3 install ../input/packages/ci_info-0.2.0-py3-none-any.whl\n!pip3 install ../input/packages/etelemetry-0.2.2-py3-none-any.whl\n!pip3 install ../input/packages/traits-6.2.0/traits-6.2.0.tar\n!pip3 install ../input/packages/nipype-1.6.1-py3-none-any.whl","metadata":{"execution":{"iopub.status.busy":"2021-10-12T06:44:32.976665Z","iopub.execute_input":"2021-10-12T06:44:32.977336Z","iopub.status.idle":"2021-10-12T06:48:45.553710Z","shell.execute_reply.started":"2021-10-12T06:44:32.977301Z","shell.execute_reply":"2021-10-12T06:48:45.552816Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# import shutil\n# shutil.rmtree(\"./Final_test\")\n# shutil.rmtree(\"./step1_test\")","metadata":{"execution":{"iopub.status.busy":"2021-10-12T04:56:30.651104Z","iopub.execute_input":"2021-10-12T04:56:30.651402Z","iopub.status.idle":"2021-10-12T04:56:30.655517Z","shell.execute_reply.started":"2021-10-12T04:56:30.651366Z","shell.execute_reply":"2021-10-12T04:56:30.654536Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!python ../input/pytorch-timm/preprocess4.py","metadata":{"execution":{"iopub.status.busy":"2021-10-12T06:50:45.678065Z","iopub.execute_input":"2021-10-12T06:50:45.678354Z","iopub.status.idle":"2021-10-12T06:53:27.822227Z","shell.execute_reply.started":"2021-10-12T06:50:45.678319Z","shell.execute_reply":"2021-10-12T06:53:27.821182Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# import timm \nimport torch\nimport os\nimport shutil\nimport pydicom\nimport numpy as np\nimport cv2\nimport random\nimport nibabel as nib\nfrom nibabel.viewers import OrthoSlicer3D\n# import fsl\n# import dicom2nifti\nimport numpy as np \nimport pandas as pd","metadata":{"execution":{"iopub.status.busy":"2021-10-12T06:53:32.964136Z","iopub.execute_input":"2021-10-12T06:53:32.964463Z","iopub.status.idle":"2021-10-12T06:53:32.969882Z","shell.execute_reply.started":"2021-10-12T06:53:32.964422Z","shell.execute_reply":"2021-10-12T06:53:32.969051Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 生成测试用的2d数据","metadata":{}},{"cell_type":"code","source":"# preserve_ratio=0.2\n# scan_type_list=[\"FLAIR\"]\n# # scan_type_list=[\"FLAIR,T1w,T1wCE,T2w\"]\n\n# data_dir=\"/kaggle/input/rsna-miccai-brain-tumor-radiogenomic-classification/test\"\n# patient_no_test=os.listdir(data_dir)\n# # patient_no_test=[\"00001\"]\n# print(\"test numbers:\",len(patient_no_test))\n\n# width_list=[]\n# height_list=[]\n\n# output_dir_test=\"/kaggle/working/flair2d/test/0\"\n# if not os.path.exists(output_dir_test):\n#     os.makedirs(output_dir_test)\n# output_dir_test2=\"/kaggle/working/flair2d/test/1\"\n# if not os.path.exists(output_dir_test2):\n#     os.makedirs(output_dir_test2)\n\n# for patient_no in patient_no_test:\n#     flag=0\n#     for scan_type in scan_type_list:\n#         image_dir=os.path.join(data_dir,patient_no,scan_type)\n#         dicom_list=os.listdir(image_dir)\n#         for dicom_name in dicom_list:\n#             dicom_path=os.path.join(image_dir,dicom_name)\n#             dicom=pydicom.read_file(dicom_path)\n#             image=dicom.pixel_array\n#             max_pixel=np.amax(image)\n#             if max_pixel >0:\n#                 image=image/max_pixel*255\n#                 if float(np.count_nonzero(image))/image.size>=preserve_ratio:\n#                     width, height=image.shape\n#                     width_list.append(width)\n#                     height_list.append(height)\n#                     output_name=patient_no+\"_\"+scan_type+\"_\"+dicom_name.split(\"-\")[1][:-4]+\".jpg\"\n#                     output_path=os.path.join(output_dir_test,output_name)\n#                     cv2.imwrite(output_path,image)\n#                     flag=1\n#     if flag==0:\n#         n=len(dicom_list)\n#         for i in [int(n/2-1),int(n/2),int(n/2+1)]:\n#             dicom_name=dicom_list[i]\n#             dicom_path=os.path.join(image_dir,dicom_name)\n#             dicom=pydicom.read_file(dicom_path)\n#             image=dicom.pixel_array\n#             if max_pixel >0:\n#                 image=image/max_pixel*255\n#                 width, height=image.shape\n#                 width_list.append(width)\n#                 height_list.append(height)\n#                 output_name=patient_no+\"_\"+scan_type+\"_\"+dicom_name.split(\"-\")[1][:-4]+\".jpg\"\n#                 output_path=os.path.join(output_dir_test,output_name)\n#                 cv2.imwrite(output_path,image)\n            \n                \n\n# print(\"width:\",np.max(np.array(width_list)),np.min(np.array(width_list)))\n# print(\"height:\",np.max(np.array(height_list)),np.min(np.array(height_list)))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"preserve_ratio=0.58\n# scan_type_list=[\"Flair.nii.gz\",\"T1c.nii.gz\",\"T1w.nii.gz\",\"T2w.nii.gz\"]\nscan_type_list=[\"T1w.nii.gz\"]\n\n# data_dir=\"/kaggle/input/rsna-test-process/test\"\ndata_dir='/kaggle/working/Final_test'\npatient_no_test=os.listdir(data_dir)\nprint(\"test numbers:\",len(patient_no_test))\n\nwidth_list=[]\nheight_list=[]\nqueue_list=[]\n\noutput_dir_test=\"/kaggle/working/flair2d/test/0\"\nif not os.path.exists(output_dir_test):\n    os.makedirs(output_dir_test)\noutput_dir_test2=\"/kaggle/working/flair2d/test/1\"\nif not os.path.exists(output_dir_test2):\n    os.makedirs(output_dir_test2)\n\nfor patient_no in patient_no_test:\n    for scan_type in scan_type_list:\n        image_3d_path=os.path.join(data_dir,patient_no,scan_type)\n        image_3d=nib.load(image_3d_path)\n        width, height, queue = image_3d.dataobj.shape\n        width_list.append(width)\n        height_list.append(height)\n        queue_list.append(queue)\n        for i in range(queue):\n            image_2d=image_3d.dataobj[:,:,i]\n            max_pixel=np.amax(image_2d)\n            if max_pixel >0:\n                image_2d=image_2d/max_pixel*255\n                if float(np.count_nonzero(image_2d))/image_2d.size>=preserve_ratio:\n                    output_name=patient_no+\"_\"+scan_type.split('.')[0]+\"_\"+str(i)+\".jpg\"\n                    output_path=os.path.join(output_dir_test,output_name)\n#                     print(output_path)\n                    cv2.imwrite(output_path,image_2d)\nprint(\"width:\",np.max(np.array(width_list)),np.min(np.array(width_list)))\nprint(\"height:\",np.max(np.array(height_list)),np.min(np.array(height_list)))\nprint(\"queue:\",np.max(np.array(queue_list)),np.min(np.array(queue_list)))","metadata":{"execution":{"iopub.status.busy":"2021-10-12T07:05:05.782516Z","iopub.execute_input":"2021-10-12T07:05:05.783210Z","iopub.status.idle":"2021-10-12T07:05:14.350688Z","shell.execute_reply.started":"2021-10-12T07:05:05.783175Z","shell.execute_reply":"2021-10-12T07:05:14.348843Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"len(os.listdir(output_dir_test))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 写/上传inference脚本，进行预测","metadata":{}},{"cell_type":"code","source":"os.makedirs(\"/kaggle/working/preresult\")","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# !python /kaggle/input/pytorch-timm/pytorch-image-models/inference_rsna.py  /kaggle/working/flair2d/test  --output_dir  \"/kaggle/working/preresult\"  --model efficientnetv2_rw_m  --checkpoint  \"/kaggle/input/weight/model_best.pth.tar\"  --num-classes 2  --img-size 240  --input-size 1 240 240  --batch-size 32\n!python /kaggle/input/pytorch-timm/pytorch-image-models/pytorch-image-models/inference_rsna.py  /kaggle/working/flair2d/test  --output_dir  \"/kaggle/working/preresult\"  --model efficientnetv2_rw_m  --checkpoint  \"/kaggle/input/weight/T1w_model_best.pth.tar\"  --num-classes 2  --img-size 240  --input-size 3 240 240  --batch-size 32","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"os.listdir(\"/kaggle/working/preresult\")","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 集成生成提交结果csv","metadata":{}},{"cell_type":"code","source":"import pandas as pd \nimport numpy as np","metadata":{"execution":{"iopub.status.busy":"2021-10-11T14:56:06.172001Z","iopub.execute_input":"2021-10-11T14:56:06.172624Z","iopub.status.idle":"2021-10-11T14:56:06.176079Z","shell.execute_reply.started":"2021-10-11T14:56:06.172583Z","shell.execute_reply":"2021-10-11T14:56:06.175436Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pre_prob=pd.read_csv(\"/kaggle/working/preresult/pre_prob.csv\",header=None,names=[\"filename\",\"prob0\",\"prob1\"])\nprint(len(pre_prob))\npre_prob.head()","metadata":{"execution":{"iopub.status.busy":"2021-10-11T14:56:10.818909Z","iopub.execute_input":"2021-10-11T14:56:10.819735Z","iopub.status.idle":"2021-10-11T14:56:10.858636Z","shell.execute_reply.started":"2021-10-11T14:56:10.819691Z","shell.execute_reply":"2021-10-11T14:56:10.857438Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"prob_dict={}\nfor i in range(len(pre_prob)):\n    filename=pre_prob.iloc[i,0]\n    prob=pre_prob.iloc[i,2]\n    patient_no=filename[:5]\n    if patient_no not in prob_dict.keys():\n        prob_dict[patient_no]=[prob]\n    else:\n        prob_dict[patient_no].append(prob)\nprint(len(prob_dict))\nprob_dict[\"00001\"]","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# sample=pd.read_csv('/kaggle/input/rsna-miccai-brain-tumor-radiogenomic-classification/sample_submission.csv')\n# sample.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# submit_pre=sample\n# for i in range(len(sample)):\n#     sample_no=sample.loc[i,\"BraTS21ID\"]\n#     patient_no=str(100000+sample_no)[1:]\n#     prob_mean=np.mean(np.array(prob_dict[patient_no]))\n#     submit_pre.loc[i,\"MGMT_value\"]=prob_mean\n\n# print(len(submit_pre))\n# submit_pre.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"column=[\"BraTS21ID\",\"MGMT_value\"]\nsubmit_pre=pd.DataFrame(columns = column)\nall_patient=os.listdir(\"/kaggle/input/rsna-miccai-brain-tumor-radiogenomic-classification/test\")\nall_patient.sort(key=lambda x: int(x))\nfor i,patient_no in enumerate(all_patient):\n    if patient_no in prob_dict.keys():\n        prob_mean=np.mean(np.array(prob_dict[patient_no]))\n        submit_pre.loc[i,\"BraTS21ID\"]=int(patient_no)\n        submit_pre.loc[i,\"MGMT_value\"]=prob_mean\n    else:\n        submit_pre.loc[i,\"BraTS21ID\"]=int(patient_no)\n        submit_pre.loc[i,\"MGMT_value\"]=0.1\n\nprint(len(submit_pre))\nsubmit_pre.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submit_pre.tail()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submit_pre.to_csv('./submission.csv',index=False)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"shutil.rmtree(\"./flair2d\")\nshutil.rmtree(\"./preresult\")\nshutil.rmtree(\"./Final_test\")\nshutil.rmtree(\"./step1_test\")","metadata":{"trusted":true},"execution_count":null,"outputs":[]}]}