{ "cells": [ { "cell_type": "code", "execution_count": null, "id": "c24846e6", "metadata": {}, "outputs": [], "source": [ "# Préparation commune des TP Python\n", "# Le notebook utilise uniquement les ressources fournies dans le dossier codes/.\n", "from pathlib import Path\n", "import importlib.util\n", "import subprocess\n", "import sys\n", "\n", "REQUIRED_PACKAGES = {'numpy': 'numpy', 'pandas': 'pandas', 'matplotlib': 'matplotlib'}\n", "missing = [package for module, package in REQUIRED_PACKAGES.items()\n", " if importlib.util.find_spec(module) is None]\n", "if missing:\n", " print(\"Installation des paquets manquants :\", \", \".join(missing))\n", " subprocess.check_call([sys.executable, \"-m\", \"pip\", \"install\", *missing])\n", "\n", "WORKDIR = Path.cwd().resolve()\n", "CODES_DIR = WORKDIR.parent if WORKDIR.name == \"correction\" else WORKDIR\n", "TOOLBOX_DIR = CODES_DIR / \"toolbox\"\n", "DATA_DIR = CODES_DIR / \"data\"\n", "if not CODES_DIR.is_dir():\n", " raise FileNotFoundError(\"Exécutez le notebook depuis le dossier codes/.\" )\n", "if TOOLBOX_DIR.is_dir():\n", " sys.path.insert(0, str(TOOLBOX_DIR))\n", "\n", "DICE_FILE = TOOLBOX_DIR / \"DICE.py\"\n", "if not DICE_FILE.is_file():\n", " raise FileNotFoundError(\n", " f\"Module du cours introuvable : {DICE_FILE}. \"\n", " \"Téléchargez le dossier codes complet, avec toolbox/.\"\n", " )\n", "\n", "DATA_FILE = DATA_DIR / \"SSP_scenarios.csv\"\n", "if not DATA_FILE.is_file():\n", " raise FileNotFoundError(\n", " f\"Donnée du cours introuvable : {DATA_FILE}. \"\n", " \"Téléchargez le dossier codes complet, avec data/.\"\n", " )\n", "\n", "print(\"Environnement prêt :\", CODES_DIR)\n" ] }, { "cell_type": "markdown", "id": "85d582d0", "metadata": {}, "source": [ "# TP3 — Génération de scénarios physiques SSP\n", "\n", "**Date de la séance :** mercredi 9 septembre 2026, 08:30–10:30\n", "\n", "**Objectifs**\n", "- Manipuler les scénarios SSP (Shared Socioeconomic Pathways)\n", "- Simuler plusieurs scénarios physiques avec DICE\n", "- Calculer des probabilités de dépassement de seuils de température\n", "- Identifier les années de dépassement de +1,5°C et +2°C selon le scénario\n", "\n", "**Prérequis** : TP2 (prise en main de DICE)." ] }, { "cell_type": "code", "execution_count": null, "id": "4e7d84fd", "metadata": {}, "outputs": [], "source": [ "import numpy as np, pandas as pd, matplotlib.pyplot as plt\n", "import DICE" ] }, { "cell_type": "markdown", "id": "0f274179", "metadata": {}, "source": [ "## Partie 1 — Scénarios SSP" ] }, { "cell_type": "markdown", "id": "a5fc8975", "metadata": {}, "source": [ "**Question 1.** Chargez le fichier SSP_scenarios.csv. Affichez les premières lignes et les colonnes disponibles." ] }, { "cell_type": "code", "execution_count": null, "id": "97aebfaa", "metadata": {}, "outputs": [], "source": [ "df_ssp = pd.read_csv(DATA_DIR / \"SSP_scenarios.csv\")\n", "# YOUR CODE HERE to display" ] }, { "cell_type": "markdown", "id": "7ec0acd9", "metadata": {}, "source": [ "## Partie 2 — Simulation des scénarios SSP avec DICE" ] }, { "cell_type": "markdown", "id": "797fa27c", "metadata": {}, "source": [ "**Question 2.** Simulez trois scénarios avec DICE en faisant varier les paramètres :\n", "- SSP1 (soutenabilité) : `gA=0.04`, `Linf=8500`, `gsig=0.025`\n", "- SSP2 (référence) : paramètres par défaut\n", "- SSP5 (fossile) : `gA=0.10`, `Linf=12000`, `gsig=0.008`" ] }, { "cell_type": "code", "execution_count": null, "id": "ac0c3d60", "metadata": {}, "outputs": [], "source": [ "ssp_params = {\n", " 'SSP1': dict(gA=0.04, Linf=8500, gsig=0.025),\n", " 'SSP2': dict(), # default\n", " 'SSP5': dict(gA=0.10, Linf=12000, gsig=0.008)\n", "}\n", "ssp_paths = {}\n", "for name, kwargs in ssp_params.items():\n", " p = DICE.Params(**kwargs)\n", " path = DICE.init_states(p)\n", " timevec = range(1, p.nT)\n", " path[1:, p.i_mu] = 0.03\n", " path = DICE.update_path(path, timevec, p)\n", " ssp_paths[name] = (p, path)" ] }, { "cell_type": "code", "execution_count": null, "id": "82c2d78f", "metadata": {}, "outputs": [], "source": [ "# YOUR CODE HERE: tracez les trajectoires T_AT pour SSP1, SSP2, SSP5" ] }, { "cell_type": "markdown", "id": "a0d8ddb8", "metadata": {}, "source": [ "**Question 3.** Calculez la probabilité de dépasser +1,5°C, +2°C et +3°C en 2100 pour chaque scénario (à ce stade, avec 3 scénarios déterministes, la 'probabilité' est 0 ou 1 — discutez pourquoi une vraie distribution nécessite Monte Carlo)." ] }, { "cell_type": "code", "execution_count": null, "id": "6c0e80d8", "metadata": {}, "outputs": [], "source": [ "# YOUR CODE HERE" ] }, { "cell_type": "markdown", "id": "f5633ee8", "metadata": {}, "source": [ "## Partie 3 — Analyse des risques chroniques et aigus" ] }, { "cell_type": "markdown", "id": "c81fe562", "metadata": {}, "source": [ "**Question 4.** Pour chaque scénario, calculez la première année de dépassement de +1,5°C et de +2°C. Présentez les résultats dans un tableau." ] }, { "cell_type": "code", "execution_count": null, "id": "d3e91833", "metadata": {}, "outputs": [], "source": [ "# YOUR CODE HERE" ] }, { "cell_type": "markdown", "id": "7bb11508", "metadata": {}, "source": [ "## Interprétation" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3.10" } }, "nbformat": 4, "nbformat_minor": 5 }