{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"gpu","dataSources":[{"sourceId":70367,"databundleVersionId":9188054,"sourceType":"competition"},{"sourceId":87191,"sourceType":"modelInstanceVersion","modelInstanceId":73238,"modelId":98108}],"dockerImageVersionId":30747,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport pandas as pd\nimport numpy as np\nimport torch\nimport torch.nn as nn\nimport torch.optim as optim\nfrom torch.utils.data import DataLoader, Dataset\n\nfrom tqdm.notebook import tqdm","metadata":{"execution":{"iopub.status.busy":"2024-10-19T15:16:00.921819Z","iopub.execute_input":"2024-10-19T15:16:00.922429Z","iopub.status.idle":"2024-10-19T15:16:03.546823Z","shell.execute_reply.started":"2024-10-19T15:16:00.922396Z","shell.execute_reply":"2024-10-19T15:16:03.546052Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# train_adc_info = pd.read_csv('/kaggle/input/ariel-data-challenge-2024/train_adc_info.csv')\ntest_adc_info = pd.read_csv('/kaggle/input/ariel-data-challenge-2024/test_adc_info.csv')\ntrain_labels = pd.read_csv('/kaggle/input/ariel-data-challenge-2024/train_labels.csv')\n# wavelengths = pd.read_csv('/kaggle/input/ariel-data-challenge-2024/wavelengths.csv')\n\n","metadata":{"execution":{"iopub.status.busy":"2024-10-19T15:16:03.54834Z","iopub.execute_input":"2024-10-19T15:16:03.548738Z","iopub.status.idle":"2024-10-19T15:16:03.615972Z","shell.execute_reply.started":"2024-10-19T15:16:03.548713Z","shell.execute_reply":"2024-10-19T15:16:03.615049Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def restore_dynamic_range(signal, gain, offset):\n    return signal * gain + offset","metadata":{"execution":{"iopub.status.busy":"2024-10-19T15:16:03.617195Z","iopub.execute_input":"2024-10-19T15:16:03.617486Z","iopub.status.idle":"2024-10-19T15:16:03.622029Z","shell.execute_reply.started":"2024-10-19T15:16:03.617462Z","shell.execute_reply":"2024-10-19T15:16:03.621067Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"class ExoplanetDataset(Dataset):\n    def __init__(self, signal_data, labels):\n        self.signal_data = signal_data\n        self.labels = labels\n\n    def __len__(self):\n        return len(self.signal_data)\n\n    def __getitem__(self, idx):\n        x = self.signal_data[idx]\n        y = self.labels[idx]\n        return x, y\n","metadata":{"execution":{"iopub.status.busy":"2024-10-19T15:16:03.624533Z","iopub.execute_input":"2024-10-19T15:16:03.62487Z","iopub.status.idle":"2024-10-19T15:16:03.631688Z","shell.execute_reply.started":"2024-10-19T15:16:03.624839Z","shell.execute_reply":"2024-10-19T15:16:03.630776Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def prepare_data(planet_id):\n    signal_data = pd.read_parquet(f'/kaggle/input/ariel-data-challenge-2024/train/{planet_id}/AIRS-CH0_signal.parquet')\n    adc_info = train_adc_info[train_adc_info['planet_id'] == planet_id]\n    restored_signal = restore_dynamic_range(signal_data, adc_info['FGS1_adc_gain'].values[0], adc_info['FGS1_adc_offset'].values[0])\n    return restored_signal\n","metadata":{"execution":{"iopub.status.busy":"2024-10-19T15:16:03.632821Z","iopub.execute_input":"2024-10-19T15:16:03.633156Z","iopub.status.idle":"2024-10-19T15:16:03.639741Z","shell.execute_reply.started":"2024-10-19T15:16:03.633124Z","shell.execute_reply":"2024-10-19T15:16:03.638901Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"class ExoplanetModel(nn.Module):\n    def __init__(self):\n        super(ExoplanetModel, self).__init__()\n        self.conv1 = nn.Conv2d(1, 32, kernel_size=3, padding=1)\n        self.conv2 = nn.Conv2d(32, 64, kernel_size=3, padding=1)\n        \n        # Calculate the size after convolutions\n        self.conv_output_size = 64 * 32 * 356\n        \n        self.fc1 = nn.Linear(self.conv_output_size, 128)\n        self.fc2 = nn.Linear(128, 283)  # 283 wavelengths\n\n    def forward(self, x):\n        x = torch.relu(self.conv1(x))\n        x = torch.relu(self.conv2(x))\n        x = x.view(x.size(0), -1)  # Flatten the tensor\n        x = torch.relu(self.fc1(x))\n        x = self.fc2(x)\n        return x\n","metadata":{"execution":{"iopub.status.busy":"2024-10-19T15:16:03.640758Z","iopub.execute_input":"2024-10-19T15:16:03.641052Z","iopub.status.idle":"2024-10-19T15:16:03.653073Z","shell.execute_reply.started":"2024-10-19T15:16:03.641024Z","shell.execute_reply":"2024-10-19T15:16:03.652405Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model = ExoplanetModel()\nmodel_path = '/kaggle/input/exoplanet-model/pytorch/default/1/exoplanet_model.pth'\nmodel.load_state_dict(torch.load(model_path))\nmodel.eval()","metadata":{"execution":{"iopub.status.busy":"2024-10-19T15:16:03.654242Z","iopub.execute_input":"2024-10-19T15:16:03.654778Z","iopub.status.idle":"2024-10-19T15:16:04.812903Z","shell.execute_reply.started":"2024-10-19T15:16:03.654753Z","shell.execute_reply":"2024-10-19T15:16:04.811963Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def prepare_test_data(planet_id):\n    signal_data = pd.read_parquet(f'/kaggle/input/ariel-data-challenge-2024/test/{planet_id}/AIRS-CH0_signal.parquet')\n    signal_data = signal_data[:250]\n    adc_info = test_adc_info[test_adc_info['planet_id'] == planet_id]  # Assuming test_adc_info is available\n    restored_signal = restore_dynamic_range(signal_data, adc_info['FGS1_adc_gain'].values[0], adc_info['FGS1_adc_offset'].values[0])\n    return restored_signal\n","metadata":{"execution":{"iopub.status.busy":"2024-10-19T15:16:04.814279Z","iopub.execute_input":"2024-10-19T15:16:04.814664Z","iopub.status.idle":"2024-10-19T15:16:04.820334Z","shell.execute_reply.started":"2024-10-19T15:16:04.81463Z","shell.execute_reply":"2024-10-19T15:16:04.819379Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission = pd.read_csv(\"/kaggle/input/ariel-data-challenge-2024/sample_submission.csv\", index_col = [\"planet_id\"])\n\nfor planet_id_test in tqdm(submission.index):\n    restored_signal_test = prepare_test_data(planet_id_test)\n\n    restored_signal_test = restored_signal_test.values.reshape(-1, 1, 32, 356)\n\n    test_dataset = ExoplanetDataset(restored_signal_test, np.zeros((restored_signal_test.shape[0], 283)))  # Dummy labels\n    test_loader = DataLoader(test_dataset, batch_size=32, shuffle=False)\n\n    outputs_list = []\n    for x, _ in tqdm(test_loader):\n        x = x.float()\n        outputs = model(x)\n        y_pred = outputs.detach().numpy()\n        outputs_list.append(y_pred)\n\n    output_array = np.concatenate(outputs_list, axis=0)\n    sub_vals = output_array.mean(axis=0)\n\n    submission.loc[planet_id_test, submission.columns[:283]] =  sub_vals\n\nsubmission.loc[planet_id_test, submission.columns[283:]] = train_labels.std()[1:].values","metadata":{"execution":{"iopub.status.busy":"2024-10-19T15:18:34.248295Z","iopub.execute_input":"2024-10-19T15:18:34.248689Z","iopub.status.idle":"2024-10-19T15:18:37.767301Z","shell.execute_reply.started":"2024-10-19T15:18:34.248657Z","shell.execute_reply":"2024-10-19T15:18:37.766388Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission\n","metadata":{"execution":{"iopub.status.busy":"2024-10-19T15:18:37.769242Z","iopub.execute_input":"2024-10-19T15:18:37.769877Z","iopub.status.idle":"2024-10-19T15:18:37.789721Z","shell.execute_reply.started":"2024-10-19T15:18:37.769841Z","shell.execute_reply":"2024-10-19T15:18:37.788687Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission.to_csv(\"submission.csv\")","metadata":{"execution":{"iopub.status.busy":"2024-10-19T15:16:08.532101Z","iopub.execute_input":"2024-10-19T15:16:08.532485Z","iopub.status.idle":"2024-10-19T15:16:08.54873Z","shell.execute_reply.started":"2024-10-19T15:16:08.532442Z","shell.execute_reply":"2024-10-19T15:16:08.548023Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}