{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.12.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[],"dockerImageVersionId":28755,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport shutil\nimport os\nimport glob\n\n# 1. Encontrar o ficheiro CSV automaticamente\ncaminho_csv = glob.glob('/kaggle/input/**/sample_studies.csv', recursive=True)[0]\namostra = pd.read_csv(caminho_csv) \nestudos = amostra['study_id'].astype(str).tolist()\n\n# 2. Encontrar a pasta 'train_images' dinamicamente\npastas_train = glob.glob('/kaggle/input/**/train_images', recursive=True)\n\nif not pastas_train:\n    print(\"ERRO: A pasta 'train_images' não foi encontrada no Input.\")\nelse:\n    raiz_train_images = pastas_train[0]\n    print(f\"Pasta das imagens encontrada em: {raiz_train_images}\")\n    \n    os.makedirs('amostra_dicoms', exist_ok=True)\n    sucessos = 0\n    \n    print(f\"A separar as imagens de {len(estudos)} exames...\")\n    for study in estudos:\n        origem = os.path.join(raiz_train_images, study)\n        destino = os.path.join('amostra_dicoms', study)\n        \n        if os.path.exists(origem):\n            shutil.copytree(origem, destino)\n            sucessos += 1\n        else:\n            print(f\"AVISO: Exame {study} não encontrado.\")\n            \n    print(f\"Copiados {sucessos} de {len(estudos)} estudos.\")\n    \n    if sucessos > 0:\n        print(\"A compactar as imagens num ficheiro ZIP (isto pode demorar alguns minutos)...\")\n        shutil.make_archive('amostra_g8_dicoms', 'zip', 'amostra_dicoms')\n        print(\"Compactação concluída!\")\n        \n    # Limpar a pasta temporária\n    shutil.rmtree('amostra_dicoms')\n    print(\"Processo finalizado. Verifique a aba Output.\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-09-26T00:43:23.182065Z","iopub.execute_input":"2026-09-26T00:43:23.182569Z","iopub.status.idle":"2026-09-26T01:07:33.146262Z","shell.execute_reply.started":"2026-09-26T00:43:23.182535Z","shell.execute_reply":"2026-09-26T01:07:33.145433Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from IPython.display import FileLink\nFileLink(r'amostra_g8_dicoms.zip')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-09-26T01:24:05.908698Z","iopub.execute_input":"2026-09-26T01:24:05.909589Z","iopub.status.idle":"2026-09-26T01:24:05.91793Z","shell.execute_reply.started":"2026-09-26T01:24:05.909541Z","shell.execute_reply":"2026-09-26T01:24:05.917117Z"}},"outputs":[],"execution_count":null}]}