{"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":"nvidiaTeslaT4","dataSources":[{"sourceId":84969,"databundleVersionId":10033515,"sourceType":"competition"},{"sourceId":9997189,"sourceType":"datasetVersion","datasetId":6152854},{"sourceId":10319965,"sourceType":"datasetVersion","datasetId":6389378},{"sourceId":10640753,"sourceType":"datasetVersion","datasetId":6152827},{"sourceId":10651064,"sourceType":"datasetVersion","datasetId":6152825},{"sourceId":10651287,"sourceType":"datasetVersion","datasetId":6167697},{"sourceId":10731762,"sourceType":"datasetVersion","datasetId":6653658}],"dockerImageVersionId":30840,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# src, configs\n!cp -r /kaggle/input/czii-src /kaggle/working; mv /kaggle/working/czii-src /kaggle/working/src\n!ln -s /kaggle/input/czii-configs /kaggle/working/configs\n\n# for rootutils\n!touch /kaggle/working/.project-root","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2025-02-12T12:15:24.169576Z","iopub.execute_input":"2025-02-12T12:15:24.169863Z","iopub.status.idle":"2025-02-12T12:15:24.781830Z","shell.execute_reply.started":"2025-02-12T12:15:24.169829Z","shell.execute_reply":"2025-02-12T12:15:24.780687Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"%%capture\n!cd /kaggle/input/czii-pip-packages-v2; pip install --no-index --find-links=./packages -r requirements.txt","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-12T12:15:24.783027Z","iopub.execute_input":"2025-02-12T12:15:24.783351Z","iopub.status.idle":"2025-02-12T12:16:30.712858Z","shell.execute_reply.started":"2025-02-12T12:15:24.783321Z","shell.execute_reply":"2025-02-12T12:16:30.711837Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"experiment_list = [\n    \"250101-particle_hard_masks_r0.5-focalTverskyPp-pretrained_241221_299-hengck23_tf_efficientnetv2_b2_d64_256-s64_128-lr1e-3_decay05-bs4_2_2-ep100-transV3-preV4\", # 0.766\n    \"250102-hard_r0.5-focalTverskyPp-pretrained_241205_299-monai_unet_d32_512_res1_head1_bn-s64_128-lr1e-3-bs4_2_2-ep100-transV1-preV1\", # 0.763\n    \"250103-particle_hard_masks_r0.5-focalTverskyPp-hengck23_tf_efficientnetv2_b2_d64_256-s64_128-lr1e-3-bs4_2_2-ep100-transV3-preV4\", # 0.753\n    \"250109-hard-focalTverskyPp-pretrained_241221_299-hengck23_v3_cn_nano_m2_d64_256-s64_128-lr1e-3_decay05-bs4_2_2-ep100-transV3-preV4\", # 0.760\n    \"250111-focalTverskyPp-pretrained_241221_299-monai_segresnet_f16_bn_d1224-s64_128-lr1e-3_decay05-bs4_2_2-ep100-transV3-preV4\", # 0.759\n    \"250113-focalTverskyPp-hengck23_enb2_d64_256-s64_256-lr1e-3-bs4_2_2-ep100-transV3-preV4\", # 0.758\n    \"250116-focalTverskyPp-pretrained_241221_299-hengck23_resnet34d_d64_256-s64_256-lr1e-3-bs4_2_2-ep50-transV3-preV4\", # 0.760\n    \"250117-focalTverskyPp-pretrained_241221_299-hengck23_resnet34d_d64_256-s64_256-lr1e-3-bs4_2_2-ep80-transV4-preV4\", # 0.757\n    \"250118-focalTverskyPp-hengck23_env2b2_d64_256-s64_128-lr1e-3_decay05-bs4_2_2-mix_sim-ep100-transV4-preV4\", # 0.757\n    \"250118-focalTverskyPp-hengck23_enb2_d64_256-disBA-s64_128-lr1e-3_decay05-bs4_2_2-ep100-transV4-preV4\", # 0.757\n]\ncompiled_model_dir_list = [\n    \"/kaggle/input/czii-sub-trt-models/czii_sub_trt_models\",\n    \"/kaggle/input/czii-sub-trt-models/czii_sub_trt_models\",\n    \"/kaggle/input/czii-sub-trt-models/czii_sub_trt_models\",\n    \"/kaggle/input/czii-sub-trt-models/czii_sub_trt_models\",\n    \"/kaggle/input/czii-sub-trt-models/czii_sub_trt_models\",\n    \"/kaggle/input/czii-sub-trt-models/czii_sub_trt_models\",\n    \"/kaggle/input/czii-sub-trt-models/czii_sub_trt_models\",\n    \"/kaggle/input/czii-sub-trt-models/czii_sub_trt_models\",\n    \"/kaggle/input/czii-sub-trt-models/czii_sub_trt_models\",\n    \"/kaggle/input/czii-sub-trt-models/czii_sub_trt_models\",\n]\nfp16_mode_list = [\n    \"True\",\n    \"False\",\n    \"True\",\n    \"True\",\n    \"True\",\n    \"True\",\n    \"True\",\n    \"True\",\n    \"True\",\n    \"True\",\n]\nbatch_size_pred_list = [\n    \"4\",   \n    \"4\",\n    \"4\",\n    \"4\",\n    \"4\",   \n    \"4\",\n    \"4\",\n    \"4\",\n    \"4\",\n    \"4\",   \n]\n\ncopick_config_path = \"/kaggle/input/czii-copick-config/copick_sub.config\"\nvoxel_size = 10.012444\ntomo_type = \"denoised\"\n\ninference_overlap = [\"0.25\", \"0.25\", \"0.25\"]\ndiscard_ratio = [\"0.08\", \"0.08\", \"0.08\"]\nthresh = [\"0.45\", \"0\", \"0.5\", \"0.6\", \"0.45\", \"0.7\"]\nn_tta = 1\n\nckpt_type = \"last\" # \"last\" or \"best\"\n\nonly_specific_particle = \"None\" # \"None\", 'apo-ferritin', 'beta-galactosidase', 'ribosome', 'thyroglobulin', 'virus-like-particle'","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-12T12:16:30.713717Z","iopub.execute_input":"2025-02-12T12:16:30.713968Z","iopub.status.idle":"2025-02-12T12:16:30.719751Z","shell.execute_reply.started":"2025-02-12T12:16:30.713947Z","shell.execute_reply":"2025-02-12T12:16:30.718900Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# リストをスペース区切りの文字列に変換\nexperiment_list_str = \" \".join(experiment_list)\ncompiled_model_dir_list_str = \" \".join(compiled_model_dir_list)\nfp16_mode_list_str = \" \".join(fp16_mode_list)\nbatch_size_pred_list_str = \" \".join(batch_size_pred_list)\nthresh_str = \" \".join(thresh)\ninference_overlap_str = \" \".join(inference_overlap)\ndiscard_ratio_str = \" \".join(discard_ratio)\n\n# コマンドを組み立て\ncmd = (\n    \"cp /kaggle/input/czii-scripts/submit_v2_1_all_data.py /kaggle/working/src; \"\n    \"python /kaggle/working/src/submit_v2_1_all_data.py \"\n    f\"--copick_config_path {copick_config_path} \"\n    f\"--experiment_list {experiment_list_str} \"\n    f\"--compiled_model_dir_list {compiled_model_dir_list_str} \"\n    f\"--fp16_mode_list {fp16_mode_list_str} \"\n    f\"--voxel_size {voxel_size} \"\n    f\"--tomo_type {tomo_type} \"\n    f\"--inference_overlap {inference_overlap_str} \"\n    f\"--discard_ratio {discard_ratio_str} \"\n    f\"--thresh {thresh_str} \"\n    f\"--batch_size_pred_list {batch_size_pred_list_str} \"\n    f\"--n_tta {n_tta} \"\n    f\"--ckpt_type {ckpt_type} \"\n    f\"--only_specific_particle {only_specific_particle}\"\n) \n\n# コマンドを実行\n!{cmd}","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-12T12:16:30.721211Z","iopub.execute_input":"2025-02-12T12:16:30.721495Z","iopub.status.idle":"2025-02-12T12:22:46.390833Z","shell.execute_reply.started":"2025-02-12T12:16:30.721472Z","shell.execute_reply":"2025-02-12T12:22:46.389987Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from glob import glob\nimport matplotlib.pyplot as plt\nimport torch\n\n\nz_list = [40, 80, 120]\nC = 6\n\npred_path = glob(\"/kaggle/tmp/preds/preds_fold_mean*.pt\")\nif len(pred_path) > 0:\n    preds = torch.load(pred_path[0])\n    preds = preds.cpu().numpy()\n\n    plt.figure(figsize=(18, 10))\n    for i, z in enumerate(z_list):\n        for c in range(C):\n            plt.subplot(len(z_list), C, i * C + c + 1)\n            plt.imshow(preds[c, z], cmap=\"viridis\", vmin=0, vmax=1)\n            plt.axis(\"off\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-12T12:22:46.391966Z","iopub.execute_input":"2025-02-12T12:22:46.392279Z","iopub.status.idle":"2025-02-12T12:22:50.486062Z","shell.execute_reply.started":"2025-02-12T12:22:46.392248Z","shell.execute_reply":"2025-02-12T12:22:50.485126Z"}},"outputs":[],"execution_count":null}]}