{"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:17:11.058375Z","iopub.execute_input":"2021-07-01T15:17:11.059138Z","iopub.status.idle":"2021-07-01T15:17:11.895396Z","shell.execute_reply.started":"2021-07-01T15:17:11.059007Z","shell.execute_reply":"2021-07-01T15:17:11.894335Z"},"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:17:11.896877Z","iopub.execute_input":"2021-07-01T15:17:11.897177Z","iopub.status.idle":"2021-07-01T15:17:13.277175Z","shell.execute_reply.started":"2021-07-01T15:17:11.897148Z","shell.execute_reply":"2021-07-01T15:17:13.276034Z"},"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(train.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        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:17:13.279669Z","iopub.execute_input":"2021-07-01T15:17:13.279995Z","iopub.status.idle":"2021-07-01T15:17:15.321744Z","shell.execute_reply.started":"2021-07-01T15:17:13.279965Z","shell.execute_reply":"2021-07-01T15:17:15.320794Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Save images","metadata":{}},{"cell_type":"code","source":"OUT_DIR = \"train/\"\nos.mkdir(OUT_DIR)","metadata":{"execution":{"iopub.status.busy":"2021-07-01T15:17:15.323557Z","iopub.execute_input":"2021-07-01T15:17:15.323885Z","iopub.status.idle":"2021-07-01T15:17:15.328869Z","shell.execute_reply.started":"2021-07-01T15:17:15.323842Z","shell.execute_reply":"2021-07-01T15:17:15.327434Z"},"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=4096, n_mels=128, fmin=20, fmax=2048)\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:17:15.330126Z","iopub.execute_input":"2021-07-01T15:17:15.330472Z","iopub.status.idle":"2021-07-01T15:17:15.343013Z","shell.execute_reply.started":"2021-07-01T15:17:15.330442Z","shell.execute_reply":"2021-07-01T15:17:15.341942Z"},"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(train['file_path'].values)\n)","metadata":{"execution":{"iopub.status.busy":"2021-07-01T15:17:15.344158Z","iopub.execute_input":"2021-07-01T15:17:15.344594Z","iopub.status.idle":"2021-07-01T15:18:03.967645Z","shell.execute_reply.started":"2021-07-01T15:17:15.344557Z","shell.execute_reply":"2021-07-01T15:18:03.965841Z"},"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:18:03.968777Z","iopub.status.idle":"2021-07-01T15:18:03.969222Z"},"trusted":true},"execution_count":null,"outputs":[]}]}