{"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":"markdown","source":"# Data Loading","metadata":{}},{"cell_type":"code","source":"import os\nimport numpy as np\nimport pandas as pd\nfrom PIL import Image\nfrom matplotlib import pyplot as plt\nimport seaborn as sns","metadata":{"execution":{"iopub.status.busy":"2021-07-01T15:19:24.877514Z","iopub.execute_input":"2021-07-01T15:19:24.878053Z","iopub.status.idle":"2021-07-01T15:19:25.774252Z","shell.execute_reply.started":"2021-07-01T15:19:24.877972Z","shell.execute_reply":"2021-07-01T15:19:25.773089Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train = pd.read_csv('../input/g2net-gravitational-wave-detection/training_labels.csv')\ntest = pd.read_csv('../input/g2net-gravitational-wave-detection/sample_submission.csv')\n\ndef get_train_file_path(image_id):\n    return \"../input/g2net-gravitational-wave-detection/train/{}/{}/{}/{}.npy\".format(\n        image_id[0], image_id[1], image_id[2], image_id)\n\ndef get_test_file_path(image_id):\n    return \"../input/g2net-gravitational-wave-detection/test/{}/{}/{}/{}.npy\".format(\n        image_id[0], image_id[1], image_id[2], image_id)\n\ntrain['file_path'] = train['id'].apply(get_train_file_path)\ntest['file_path'] = test['id'].apply(get_test_file_path)\n\ndisplay(train.head())\ndisplay(test.head())","metadata":{"execution":{"iopub.status.busy":"2021-07-01T15:19:25.775885Z","iopub.execute_input":"2021-07-01T15:19:25.77628Z","iopub.status.idle":"2021-07-01T15:19:26.931882Z","shell.execute_reply.started":"2021-07-01T15:19:25.77624Z","shell.execute_reply":"2021-07-01T15:19:26.930934Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Visualize","metadata":{}},{"cell_type":"code","source":"import librosa\nimport librosa.display\n\nfor i in range(1):\n    waves = np.load(test.loc[i, 'file_path']).astype(np.float32) # (3, 4096)\n    melspecs = []\n    for j in range(3):\n        melspec = librosa.feature.melspectrogram(waves[j] / max(waves[j]),\n                                                 #sr=4096, n_mels=128, fmin=20, fmax=2048)\n                                                 sr=2048, n_mels=128, fmin=20, fmax=1024)\n        melspec = librosa.power_to_db(melspec)\n        melspec = melspec.transpose((1, 0))\n        melspecs.append(melspec)\n    image = np.vstack(melspecs)\n    plt.imshow(image)","metadata":{"execution":{"iopub.status.busy":"2021-07-01T15:19:26.933701Z","iopub.execute_input":"2021-07-01T15:19:26.934031Z","iopub.status.idle":"2021-07-01T15:19:29.012516Z","shell.execute_reply.started":"2021-07-01T15:19:26.93399Z","shell.execute_reply":"2021-07-01T15:19:29.011552Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Save images","metadata":{}},{"cell_type":"code","source":"OUT_DIR = \"test/\"\nos.mkdir(OUT_DIR)","metadata":{"execution":{"iopub.status.busy":"2021-07-01T15:19:29.01453Z","iopub.execute_input":"2021-07-01T15:19:29.01483Z","iopub.status.idle":"2021-07-01T15:19:29.01934Z","shell.execute_reply.started":"2021-07-01T15:19:29.014798Z","shell.execute_reply":"2021-07-01T15:19:29.01806Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def save_images(file_path):\n    file_name = file_path.split('/')[-1].split('.npy')[0]\n    waves = np.load(file_path).astype(np.float32) # (3, 4096)\n    melspecs = []\n    for j in range(3):\n        melspec = librosa.feature.melspectrogram(waves[j] / max(waves[j]),\n                                                 sr=2048, n_mels=128, fmin=20, fmax=1024)\n        melspec = librosa.power_to_db(melspec)\n        melspec = melspec.transpose((1, 0))\n        melspecs.append(melspec)\n    image = np.vstack(melspecs)\n    np.save(OUT_DIR + file_name, image)","metadata":{"execution":{"iopub.status.busy":"2021-07-01T15:19:29.021625Z","iopub.execute_input":"2021-07-01T15:19:29.022534Z","iopub.status.idle":"2021-07-01T15:19:29.037081Z","shell.execute_reply.started":"2021-07-01T15:19:29.022405Z","shell.execute_reply":"2021-07-01T15:19:29.035495Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import joblib\nfrom tqdm.auto import tqdm\n\n_ = joblib.Parallel(n_jobs=8)(\n    joblib.delayed(save_images)(file_path) for file_path in tqdm(test['file_path'].values)\n)","metadata":{"execution":{"iopub.status.busy":"2021-07-01T15:19:29.038429Z","iopub.execute_input":"2021-07-01T15:19:29.038728Z","iopub.status.idle":"2021-07-01T15:19:32.197546Z","shell.execute_reply.started":"2021-07-01T15:19:29.0387Z","shell.execute_reply":"2021-07-01T15:19:32.196327Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import shutil\n\nshutil.make_archive(OUT_DIR, 'zip', OUT_DIR)\nshutil.rmtree(OUT_DIR)","metadata":{"execution":{"iopub.status.busy":"2021-07-01T15:19:32.202397Z","iopub.execute_input":"2021-07-01T15:19:32.202806Z","iopub.status.idle":"2021-07-01T15:19:32.21856Z","shell.execute_reply.started":"2021-07-01T15:19:32.202757Z","shell.execute_reply":"2021-07-01T15:19:32.217529Z"},"trusted":true},"execution_count":null,"outputs":[]}]}