{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.14","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":70367,"databundleVersionId":9188054,"sourceType":"competition"}],"dockerImageVersionId":30786,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"!pip install wget\n!pip install taurex --use-pep517","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-03T14:32:41.482346Z","iopub.execute_input":"2024-11-03T14:32:41.483452Z","iopub.status.idle":"2024-11-03T14:33:05.62965Z","shell.execute_reply.started":"2024-11-03T14:32:41.483396Z","shell.execute_reply":"2024-11-03T14:33:05.628112Z"},"_kg_hide-output":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Import data for TauREx","metadata":{}},{"cell_type":"code","source":"import wget\nimport os\n\n# Load Collision Induced Absorption (CIA) files from HITRANonline\nos.makedirs('CIA', exist_ok=True)\nfor type in ['H2-H2_2011', 'H2-He_2011']:\n    wget.download(f'https://hitran.org/data/CIA/{type}.cia', f'CIA/{type}.cia') \n\n# Load Opacity files from ExoMol\nos.makedirs('opacities', exist_ok=True)\nfor name, tag, source, sep in [\n    ['CO', '12C-16O', 'Li2015', '.'],\n    ['CO2', '12C-16O2', 'UCL-4000', '.'],\n    ['CH4', '12C-1H4', 'MM', '.'],\n    ['NH3', '14N-1H3', 'CoYuTe', '.'],\n    ['N2O', '14N2-16O', 'TYM', '.'],\n    ['HCN', '1H-12C-14N', 'Harris', '.'],\n    ['H2O', '1H2-16O', 'POKAZATEL', '__'],\n    ['TiO', '46Ti-16O', 'Toto', '.'],\n    ['FeH', '56Fe-1H', 'MoLLIST', '.'],\n]:\n    wget.download(f'https://exomol.com/db/{name}/{tag}/{source}/{tag}__{source}{sep}R15000_0.3-50mu.xsec.TauREx.h5', \n                  f'opacities/{tag}__{source}{sep}R15000_0.3-50mu.xsec.TauREx.h5') ","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-03T14:14:27.140039Z","iopub.execute_input":"2024-11-03T14:14:27.141234Z","iopub.status.idle":"2024-11-03T14:16:14.376346Z","shell.execute_reply.started":"2024-11-03T14:14:27.141171Z","shell.execute_reply":"2024-11-03T14:16:14.37533Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from taurex.cache import OpacityCache,CIACache\nimport taurex.log\n\nPATH_OPACITY_CACHE = \"opacities\"\nPATH_CIA_CACHE = \"CIA\"\n\nOpacityCache().clear_cache()\nOpacityCache().set_opacity_path(PATH_OPACITY_CACHE)\nCIACache().set_cia_path(PATH_CIA_CACHE)\n\ntaurex.log.disableLogging()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-03T14:16:14.378298Z","iopub.execute_input":"2024-11-03T14:16:14.378636Z","iopub.status.idle":"2024-11-03T14:16:17.393228Z","shell.execute_reply.started":"2024-11-03T14:16:14.378602Z","shell.execute_reply":"2024-11-03T14:16:17.392103Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Star and planet","metadata":{}},{"cell_type":"code","source":"from taurex.stellar import BlackbodyStar\nfrom taurex.planet import Planet\n\nstar = BlackbodyStar(temperature=1430.0, radius=1.) # Temperature deduced from train set stars 0/1 is approximately 1430K\nplanet = Planet(planet_radius=0.348, planet_mass=0.075)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-03T14:16:17.395685Z","iopub.execute_input":"2024-11-03T14:16:17.396231Z","iopub.status.idle":"2024-11-03T14:16:17.751547Z","shell.execute_reply.started":"2024-11-03T14:16:17.396187Z","shell.execute_reply":"2024-11-03T14:16:17.750221Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Chemistry","metadata":{}},{"cell_type":"code","source":"from taurex.chemistry import ConstantGas\n\nchemistry = taurex.chemistry.TaurexChemistry(fill_gases=['H2','He'],ratio=0.172)\n\nchemistry.addGas(ConstantGas('CH4',mix_ratio=1.e-4))\nchemistry.addGas(ConstantGas('H2O',mix_ratio=1.e-6))\nchemistry.addGas(ConstantGas('CO2',mix_ratio=1.e-4))\nchemistry.addGas(ConstantGas('CO',mix_ratio=1.e-6))\nchemistry.addGas(ConstantGas('NH3',mix_ratio=1.e-6))\nchemistry.addGas(ConstantGas('N2O',mix_ratio=1.e-6))\nchemistry.addGas(ConstantGas('HCN',mix_ratio=1.e-6))\nchemistry.addGas(ConstantGas('TiO',mix_ratio=1.e-6))\nchemistry.addGas(ConstantGas('FeH',mix_ratio=1.e-6))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-03T14:16:17.752939Z","iopub.execute_input":"2024-11-03T14:16:17.753311Z","iopub.status.idle":"2024-11-03T14:16:18.294233Z","shell.execute_reply.started":"2024-11-03T14:16:17.753257Z","shell.execute_reply":"2024-11-03T14:16:18.292996Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Transmission model","metadata":{}},{"cell_type":"code","source":"from taurex.model import TransmissionModel\nfrom taurex.contributions import AbsorptionContribution, CIAContribution, RayleighContribution\n\ntm = TransmissionModel(planet=planet,\n                       temperature_profile=taurex.temperature.Isothermal(T=1430.0),\n                       chemistry=chemistry,\n                       star=star,\n                       atm_min_pressure=1e-3,\n                       atm_max_pressure=1e3,\n                       nlayers=30)\n\ntm.add_contribution(AbsorptionContribution())\ntm.add_contribution(CIAContribution(cia_pairs=['H2-H2','H2-He']))\ntm.add_contribution(RayleighContribution())\n\ntm.build()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-03T14:16:18.295691Z","iopub.execute_input":"2024-11-03T14:16:18.296252Z","iopub.status.idle":"2024-11-03T14:16:18.303788Z","shell.execute_reply.started":"2024-11-03T14:16:18.29621Z","shell.execute_reply":"2024-11-03T14:16:18.302369Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from taurex.spectrum import ArraySpectrum\nimport numpy as np\nimport pandas as pd\n\nINPUT_PATH = \"/kaggle/input/ariel-data-challenge-2024/\"\nwavelengths = np.array(pd.read_csv(os.path.join(INPUT_PATH,'wavelengths.csv')))[0].reshape(-1,1)\n\nspectrum = np.hstack((wavelengths,\n                      np.ones_like(wavelengths) * 0.001,\n                      np.ones_like(wavelengths) * 0.001))\n\nobs = ArraySpectrum(spectrum)\nobin = obs.create_binner()\nxdata = obs.wavelengthGrid\n\ndef modelR():\n    \"\"\"return model spectrum based on objective wavelengths\"\"\"\n    bin_wn, bin_rprs,_,_ = obin.bin_model(tm.model(wngrid=obs.wavenumberGrid))\n    return bin_rprs","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-03T14:16:18.305047Z","iopub.execute_input":"2024-11-03T14:16:18.305446Z","iopub.status.idle":"2024-11-03T14:16:52.747671Z","shell.execute_reply.started":"2024-11-03T14:16:18.305405Z","shell.execute_reply":"2024-11-03T14:16:52.746575Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Generate random spectra","metadata":{}},{"cell_type":"code","source":"import scipy\n\nlabels = []\nfor i in range(11000):\n    if i % 100 == 0: print(i)\n\n    tm[\"atm_max_pressure\"] = 2\n    tm[\"atm_min_pressure\"] = tm[\"atm_max_pressure\"]*1e-6\n    tm['planet_mass'] = 0.001\n    tm['planet_radius']=0.2\n    tm['T']=600\n    \n    x = np.random.rand(9)*18\n    x[5:] = 0.\n    x[:5] = scipy.special.softmax(x[:5], axis=None)*(0.4 + 0.55 * np.random.rand())\n    np.random.shuffle(x)\n    \n    tm['CH4']=x[0]\n    tm['CO']=x[1]\n    tm['H2O']=x[2]\n    tm['NH3']=x[3]\n    tm['CO2']=x[4]\n    tm['N2O']=x[5]\n    tm['HCN']=x[6]\n    tm['TiO']=x[7]\n    tm['FeH']=x[8]\n    \n    rprs_gas = modelR()\n    labels.append(scipy.signal.medfilt(rprs_gas, 3)[::-1])\n    \nlabels = np.array(labels)\nprint(labels)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-03T14:16:52.749134Z","iopub.execute_input":"2024-11-03T14:16:52.749517Z","iopub.status.idle":"2024-11-03T14:18:30.247315Z","shell.execute_reply.started":"2024-11-03T14:16:52.749476Z","shell.execute_reply":"2024-11-03T14:18:30.245487Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Save labels to file","metadata":{}},{"cell_type":"code","source":"np.save('labels.npy', labels)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-03T14:18:30.248885Z","iopub.status.idle":"2024-11-03T14:18:30.249567Z","shell.execute_reply.started":"2024-11-03T14:18:30.24923Z","shell.execute_reply":"2024-11-03T14:18:30.249281Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"!cp /kaggle/input/ariel-data-challenge-2024/train_labels.csv .","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-03T14:18:30.251975Z","iopub.status.idle":"2024-11-03T14:18:30.252588Z","shell.execute_reply.started":"2024-11-03T14:18:30.252286Z","shell.execute_reply":"2024-11-03T14:18:30.252318Z"},"_kg_hide-output":true},"outputs":[],"execution_count":null}]}