{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Sensitivity analysis of Ishigami function with Stochastic Collocation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Run an EasyVVUQ campaign to analyze the sensitivity for the Ishigami function\n", "\n", "This is done with SC." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2021-06-07T14:15:21.463066Z", "start_time": "2021-06-07T14:15:16.010020Z" }, "code_folding": [ 0 ], "execution": { "iopub.execute_input": "2025-07-18T11:18:39.965874Z", "iopub.status.busy": "2025-07-18T11:18:39.965675Z", "iopub.status.idle": "2025-07-18T11:18:59.072621Z", "shell.execute_reply": "2025-07-18T11:18:59.071662Z", "shell.execute_reply.started": "2025-07-18T11:18:39.965862Z" } }, "outputs": [], "source": [ "# Run an EasyVVUQ campaign to analyze the sensitivity for the Ishigami function\n", "# This is done with SC.\n", "%matplotlib inline\n", "import os\n", "import easyvvuq as uq\n", "import chaospy as cp\n", "import pickle\n", "import numpy as np\n", "import matplotlib.pylab as plt\n", "import time\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2021-06-07T14:15:21.476480Z", "start_time": "2021-06-07T14:15:21.468639Z" }, "execution": { "iopub.execute_input": "2025-07-18T11:18:59.075426Z", "iopub.status.busy": "2025-07-18T11:18:59.073930Z", "iopub.status.idle": "2025-07-18T11:18:59.088391Z", "shell.execute_reply": "2025-07-18T11:18:59.086667Z", "shell.execute_reply.started": "2025-07-18T11:18:59.075312Z" } }, "outputs": [ { "data": { "text/plain": [ "'1.26.4'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.__version__" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2021-06-07T14:15:21.500137Z", "start_time": "2021-06-07T14:15:21.486267Z" }, "code_folding": [ 0, 1 ], "execution": { "iopub.execute_input": "2025-07-18T11:18:59.089503Z", "iopub.status.busy": "2025-07-18T11:18:59.089275Z", "iopub.status.idle": "2025-07-18T11:18:59.097189Z", "shell.execute_reply": "2025-07-18T11:18:59.096491Z", "shell.execute_reply.started": "2025-07-18T11:18:59.089480Z" } }, "outputs": [], "source": [ "# Define the Ishigami function\n", "def ishigamiSA(a,b):\n", " '''Exact sensitivity indices of the Ishigami function for given a and b.\n", " From https://openturns.github.io/openturns/master/examples/meta_modeling/chaos_ishigami.html\n", " '''\n", " var = 1.0/2 + a**2/8 + b*np.pi**4/5 + b**2*np.pi**8/18\n", " S1 = (1.0/2 + b*np.pi**4/5+b**2*np.pi**8/50)/var\n", " S2 = (a**2/8)/var\n", " S3 = 0\n", " S13 = b**2*np.pi**8/2*(1.0/9-1.0/25)/var\n", " exact = {\n", " 'expectation' : a/2,\n", " 'variance' : var,\n", " 'S1' : (1.0/2 + b*np.pi**4/5+b**2*np.pi**8.0/50)/var,\n", " 'S2' : (a**2/8)/var,\n", " 'S3' : 0,\n", " 'S12' : 0,\n", " 'S23' : 0,\n", " 'S13' : S13,\n", " 'S123' : 0,\n", " 'ST1' : S1 + S13,\n", " 'ST2' : S2,\n", " 'ST3' : S3 + S13\n", " }\n", " return exact\n", "\n", "Ishigami_a = 7.0\n", "Ishigami_b = 0.1\n", "exact = ishigamiSA(Ishigami_a, Ishigami_b)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2021-06-07T14:15:21.510035Z", "start_time": "2021-06-07T14:15:21.505751Z" }, "code_folding": [ 0 ], "execution": { "iopub.execute_input": "2025-07-18T11:18:59.097708Z", "iopub.status.busy": "2025-07-18T11:18:59.097611Z", "iopub.status.idle": "2025-07-18T11:18:59.100661Z", "shell.execute_reply": "2025-07-18T11:18:59.100372Z", "shell.execute_reply.started": "2025-07-18T11:18:59.097699Z" } }, "outputs": [], "source": [ "# define a model to run the Ishigami code directly from python, expecting a dictionary and returning a dictionary\n", "def run_ishigami_model(input):\n", " import Ishigami\n", " qois = [\"Ishigami\"]\n", " del input['out_file']\n", " return {qois[0]: Ishigami.evaluate(**input)}" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2021-06-07T14:15:21.520594Z", "start_time": "2021-06-07T14:15:21.515444Z" }, "code_folding": [ 0 ], "execution": { "iopub.execute_input": "2025-07-18T11:18:59.101402Z", "iopub.status.busy": "2025-07-18T11:18:59.101164Z", "iopub.status.idle": "2025-07-18T11:18:59.105366Z", "shell.execute_reply": "2025-07-18T11:18:59.105035Z", "shell.execute_reply.started": "2025-07-18T11:18:59.101371Z" } }, "outputs": [], "source": [ "# Define parameter space\n", "def define_params():\n", " return {\n", " \"x1\": {\"type\": \"float\", \"min\": -np.pi, \"max\": np.pi, \"default\": 0.0},\n", " \"x2\": {\"type\": \"float\", \"min\": -np.pi, \"max\": np.pi, \"default\": 0.0},\n", " \"x3\": {\"type\": \"float\", \"min\": -np.pi, \"max\": np.pi, \"default\": 0.0},\n", " \"a\": {\"type\": \"float\", \"min\": Ishigami_a, \"max\": Ishigami_a, \"default\": Ishigami_a},\n", " \"b\": {\"type\": \"float\", \"min\": Ishigami_b, \"max\": Ishigami_b, \"default\": Ishigami_b},\n", " \"out_file\": {\"type\": \"string\", \"default\": \"output.csv\"}\n", " }" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2021-06-07T14:15:21.530671Z", "start_time": "2021-06-07T14:15:21.525407Z" }, "code_folding": [ 0 ], "execution": { "iopub.execute_input": "2025-07-18T11:18:59.105863Z", "iopub.status.busy": "2025-07-18T11:18:59.105772Z", "iopub.status.idle": "2025-07-18T11:18:59.108388Z", "shell.execute_reply": "2025-07-18T11:18:59.107958Z", "shell.execute_reply.started": "2025-07-18T11:18:59.105854Z" } }, "outputs": [], "source": [ "# Define parameter space\n", "def define_vary():\n", " return {\n", " \"x1\": cp.Uniform(-np.pi, np.pi),\n", " \"x2\": cp.Uniform(-np.pi, np.pi),\n", " \"x3\": cp.Uniform(-np.pi, np.pi)\n", " }" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2021-06-07T14:15:21.547702Z", "start_time": "2021-06-07T14:15:21.534015Z" }, "code_folding": [ 0 ], "execution": { "iopub.execute_input": "2025-07-18T11:18:59.109008Z", "iopub.status.busy": "2025-07-18T11:18:59.108916Z", "iopub.status.idle": "2025-07-18T11:18:59.113518Z", "shell.execute_reply": "2025-07-18T11:18:59.113231Z", "shell.execute_reply.started": "2025-07-18T11:18:59.109000Z" } }, "outputs": [], "source": [ "# Set up and run a campaign\n", "def run_campaign(sc_order=2, use_files=False):\n", "\n", " times = np.zeros(7)\n", "\n", " time_start = time.time()\n", " time_start_whole = time_start\n", "\n", " # Set up a fresh campaign called \"Ishigami_sc.\"\n", " my_campaign = uq.Campaign(name='Ishigami_sc.')\n", "\n", "\n", " # Create an encoder and decoder for SC test app\n", " if use_files:\n", " encoder = uq.encoders.GenericEncoder(template_fname='Ishigami.template',\n", " delimiter='$',\n", " target_filename='Ishigami_in.json')\n", "\n", " decoder = uq.decoders.SimpleCSV(target_filename=\"output.csv\",\n", " output_columns=[\"Ishigami\"])\n", "\n", " execute = uq.actions.ExecuteLocal('python3 %s/Ishigami.py Ishigami_in.json' % (os.getcwd()))\n", "\n", " actions = uq.actions.Actions(uq.actions.CreateRunDirectory('/tmp'), \n", " uq.actions.Encode(encoder), execute, uq.actions.Decode(decoder))\n", " else:\n", " actions = uq.actions.Actions(uq.actions.ExecutePython(run_ishigami_model))\n", "\n", " # Add the app (automatically set as current app)\n", " my_campaign.add_app(name=\"Ishigami\", params=define_params(), actions=actions)\n", "\n", " # Create the sampler\n", " time_end = time.time()\n", " times[1] = time_end-time_start\n", " print('Time for phase 1 = %.3f' % (times[1]))\n", "\n", " time_start = time.time()\n", " # Associate a sampler with the campaign\n", " my_campaign.set_sampler(uq.sampling.SCSampler(vary=define_vary(), polynomial_order=sc_order))\n", "\n", " # Will draw all (of the finite set of samples)\n", " my_campaign.draw_samples()\n", " print('Number of samples = %s' % my_campaign.get_active_sampler().count)\n", "\n", " time_end = time.time()\n", " times[2] = time_end-time_start\n", " print('Time for phase 2 = %.3f' % (times[2]))\n", "\n", " time_start = time.time()\n", " # Run the cases\n", " my_campaign.execute(sequential=True).collate(progress_bar=True)\n", "\n", " time_end = time.time()\n", " times[3] = time_end-time_start\n", " print('Time for phase 3 = %.3f' % (times[3]))\n", "\n", " time_start = time.time()\n", " # Get the results\n", " results_df = my_campaign.get_collation_result()\n", "\n", " time_end = time.time()\n", " times[4] = time_end-time_start\n", " print('Time for phase 4 = %.3f' % (times[4]))\n", "\n", " time_start = time.time()\n", " # Post-processing analysis\n", " results = my_campaign.analyse(qoi_cols=[\"Ishigami\"])\n", " \n", " time_end = time.time()\n", " times[5] = time_end-time_start\n", " print('Time for phase 5 = %.3f' % (times[5]))\n", "\n", " time_start = time.time()\n", " # Save the results\n", " pickle.dump(results, open('Ishigami_results.pickle','bw'))\n", " time_end = time.time()\n", " times[6] = time_end-time_start\n", " print('Time for phase 6 = %.3f' % (times[6]))\n", "\n", " times[0] = time_end - time_start_whole\n", "\n", " return results_df, results, times, sc_order, my_campaign.get_active_sampler().count" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2021-06-07T14:17:40.849526Z", "start_time": "2021-06-07T14:15:21.555355Z" }, "code_folding": [ 0 ], "execution": { "iopub.execute_input": "2025-07-18T11:18:59.114251Z", "iopub.status.busy": "2025-07-18T11:18:59.114001Z", "iopub.status.idle": "2025-07-18T11:20:12.402469Z", "shell.execute_reply": "2025-07-18T11:20:12.401891Z", "shell.execute_reply.started": "2025-07-18T11:18:59.114239Z" }, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 1 = 0.047\n", "Number of samples = 8\n", "Time for phase 2 = 0.035\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|███████████████████████████████████████████| 8/8 [00:00<00:00, 2196.69it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 0.026\n", "Time for phase 4 = 0.004\n", "Time for phase 5 = 0.004\n", "Time for phase 6 = 0.002\n", "Time for phase 1 = 0.007\n", "Number of samples = 27\n", "Time for phase 2 = 0.038\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|█████████████████████████████████████████| 27/27 [00:00<00:00, 4843.93it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 0.010\n", "Time for phase 4 = 0.002\n", "Time for phase 5 = 0.009\n", "Time for phase 6 = 0.001\n", "Time for phase 1 = 0.006\n", "Number of samples = 64\n", "Time for phase 2 = 0.060\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n", "100%|█████████████████████████████████████████| 64/64 [00:00<00:00, 6232.83it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 0.015\n", "Time for phase 4 = 0.002\n", "Time for phase 5 = 0.017\n", "Time for phase 6 = 0.001\n", "Time for phase 1 = 0.005\n", "Number of samples = 125\n", "Time for phase 2 = 0.088\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|███████████████████████████████████████| 125/125 [00:00<00:00, 6635.80it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 0.024\n", "Time for phase 4 = 0.003\n", "Time for phase 5 = 0.031\n", "Time for phase 6 = 0.001\n", "Time for phase 1 = 0.006\n", "Number of samples = 216\n", "Time for phase 2 = 0.129\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|███████████████████████████████████████| 216/216 [00:00<00:00, 6528.19it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 0.040\n", "Time for phase 4 = 0.004\n", "Time for phase 5 = 0.053\n", "Time for phase 6 = 0.001\n", "Time for phase 1 = 0.008\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Number of samples = 343\n", "Time for phase 2 = 0.183\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|███████████████████████████████████████| 343/343 [00:00<00:00, 6026.43it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 0.148\n", "Time for phase 4 = 0.005\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 5 = 0.099\n", "Time for phase 6 = 0.001\n", "Time for phase 1 = 0.006\n", "Number of samples = 512\n", "Time for phase 2 = 0.253\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|███████████████████████████████████████| 512/512 [00:00<00:00, 5871.77it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 0.101\n", "Time for phase 4 = 0.010\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 5 = 0.157\n", "Time for phase 6 = 0.002\n", "Time for phase 1 = 0.006\n", "Number of samples = 729\n", "Time for phase 2 = 0.296\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|███████████████████████████████████████| 729/729 [00:00<00:00, 6839.85it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 0.123\n", "Time for phase 4 = 0.009\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 5 = 0.234\n", "Time for phase 6 = 0.002\n", "Time for phase 1 = 0.006\n", "Number of samples = 1000\n", "Time for phase 2 = 0.371\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|█████████████████████████████████████| 1000/1000 [00:00<00:00, 6250.98it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 0.181\n", "Time for phase 4 = 0.011\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 5 = 0.327\n", "Time for phase 6 = 0.002\n", "Time for phase 1 = 0.018\n", "Number of samples = 1331\n", "Time for phase 2 = 0.510\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|█████████████████████████████████████| 1331/1331 [00:00<00:00, 6795.01it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 0.223\n", "Time for phase 4 = 0.014\n", "Time for phase 5 = 0.461\n", "Time for phase 6 = 0.005\n", "Time for phase 1 = 0.017\n", "Number of samples = 1728\n", "Time for phase 2 = 0.628\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|█████████████████████████████████████| 1728/1728 [00:00<00:00, 4753.59it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 0.401\n", "Time for phase 4 = 0.021\n", "Time for phase 5 = 0.710\n", "Time for phase 6 = 0.004\n", "Time for phase 1 = 0.006\n", "Number of samples = 2197\n", "Time for phase 2 = 0.727\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|█████████████████████████████████████| 2197/2197 [00:00<00:00, 4872.05it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 0.494\n", "Time for phase 4 = 0.022\n", "Time for phase 5 = 0.949\n", "Time for phase 6 = 0.004\n", "Time for phase 1 = 0.006\n", "Number of samples = 2744\n", "Time for phase 2 = 0.849\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|█████████████████████████████████████| 2744/2744 [00:00<00:00, 6316.13it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 0.559\n", "Time for phase 4 = 0.028\n", "Time for phase 5 = 1.308\n", "Time for phase 6 = 0.005\n", "Time for phase 1 = 0.008\n", "Number of samples = 3375\n", "Time for phase 2 = 1.287\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|█████████████████████████████████████| 3375/3375 [00:00<00:00, 5507.12it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 0.699\n", "Time for phase 4 = 0.122\n", "Time for phase 5 = 1.867\n", "Time for phase 6 = 0.010\n", "Time for phase 1 = 0.009\n", "Number of samples = 4096\n", "Time for phase 2 = 1.295\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|█████████████████████████████████████| 4096/4096 [00:00<00:00, 6287.32it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 0.731\n", "Time for phase 4 = 0.114\n", "Time for phase 5 = 2.538\n", "Time for phase 6 = 0.012\n", "Time for phase 1 = 0.011\n", "Number of samples = 4913\n", "Time for phase 2 = 1.524\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|█████████████████████████████████████| 4913/4913 [00:00<00:00, 5984.61it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 0.915\n", "Time for phase 4 = 0.123\n", "Time for phase 5 = 3.376\n", "Time for phase 6 = 0.423\n", "Time for phase 1 = 0.014\n", "Number of samples = 5832\n", "Time for phase 2 = 1.861\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|█████████████████████████████████████| 5832/5832 [00:00<00:00, 6221.33it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 1.115\n", "Time for phase 4 = 0.140\n", "Time for phase 5 = 4.407\n", "Time for phase 6 = 0.013\n", "Time for phase 1 = 0.010\n", "Number of samples = 6859\n", "Time for phase 2 = 2.084\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|█████████████████████████████████████| 6859/6859 [00:01<00:00, 6533.70it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 1.242\n", "Time for phase 4 = 0.135\n", "Time for phase 5 = 5.694\n", "Time for phase 6 = 0.022\n", "Time for phase 1 = 0.011\n", "Number of samples = 8000\n", "Time for phase 2 = 2.377\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|█████████████████████████████████████| 8000/8000 [00:01<00:00, 6499.63it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 1.378\n", "Time for phase 4 = 0.149\n", "Time for phase 5 = 7.615\n", "Time for phase 6 = 0.023\n", "Time for phase 1 = 0.016\n", "Number of samples = 9261\n", "Time for phase 2 = 2.595\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|█████████████████████████████████████| 9261/9261 [00:01<00:00, 6123.90it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Time for phase 3 = 1.746\n", "Time for phase 4 = 0.167\n", "Time for phase 5 = 14.192\n", "Time for phase 6 = 0.023\n" ] } ], "source": [ "# Calculate the stochastic collocation expansion for a range of orders\n", "\n", "R = {}\n", "for sc_order in range(1, 21):\n", " R[sc_order] = {}\n", " (R[sc_order]['results_df'], \n", " R[sc_order]['results'], \n", " R[sc_order]['times'], \n", " R[sc_order]['order'], \n", " R[sc_order]['number_of_samples']) = run_campaign(sc_order=sc_order, use_files=False)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2021-06-07T14:17:41.284212Z", "start_time": "2021-06-07T14:17:40.854979Z" }, "code_folding": [ 0 ], "execution": { "iopub.execute_input": "2025-07-18T11:20:12.404370Z", "iopub.status.busy": "2025-07-18T11:20:12.404176Z", "iopub.status.idle": "2025-07-18T11:20:12.561652Z", "shell.execute_reply": "2025-07-18T11:20:12.561326Z", "shell.execute_reply.started": "2025-07-18T11:20:12.404357Z" } }, "outputs": [], "source": [ "# save the results\n", "\n", "pickle.dump(R, open('collected_results.pickle','bw'))" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2021-06-07T14:17:41.753581Z", "start_time": "2021-06-07T14:17:41.285527Z" }, "code_folding": [ 0 ], "execution": { "iopub.execute_input": "2025-07-18T11:20:12.562207Z", "iopub.status.busy": "2025-07-18T11:20:12.562121Z", "iopub.status.idle": "2025-07-18T11:20:12.609459Z", "shell.execute_reply": "2025-07-18T11:20:12.609040Z", "shell.execute_reply.started": "2025-07-18T11:20:12.562198Z" } }, "outputs": [ { "data": { "text/html": [ "
| \n", " | Total | \n", "Phase 1 | \n", "Phase 2 | \n", "Phase 3 | \n", "Phase 4 | \n", "Phase 5 | \n", "Phase 6 | \n", "
|---|---|---|---|---|---|---|---|
| 1 | \n", "0.116857 | \n", "0.046528 | \n", "0.034933 | \n", "0.025752 | \n", "0.003636 | \n", "0.004290 | \n", "0.001542 | \n", "
| 2 | \n", "0.066798 | \n", "0.006985 | \n", "0.038313 | \n", "0.009610 | \n", "0.001932 | \n", "0.009117 | \n", "0.000763 | \n", "
| 3 | \n", "0.100764 | \n", "0.005955 | \n", "0.060359 | \n", "0.014736 | \n", "0.002238 | \n", "0.016597 | \n", "0.000803 | \n", "
| 4 | \n", "0.151393 | \n", "0.005356 | \n", "0.087646 | \n", "0.023992 | \n", "0.002885 | \n", "0.030742 | \n", "0.000696 | \n", "
| 5 | \n", "0.234107 | \n", "0.005735 | \n", "0.129114 | \n", "0.040493 | \n", "0.004272 | \n", "0.053385 | \n", "0.001017 | \n", "
| 6 | \n", "0.445746 | \n", "0.008459 | \n", "0.183465 | \n", "0.148184 | \n", "0.005055 | \n", "0.098970 | \n", "0.001456 | \n", "
| 7 | \n", "0.528847 | \n", "0.005818 | \n", "0.253195 | \n", "0.101443 | \n", "0.009872 | \n", "0.156532 | \n", "0.001785 | \n", "
| 8 | \n", "0.668787 | \n", "0.005989 | \n", "0.295620 | \n", "0.122671 | \n", "0.008789 | \n", "0.233810 | \n", "0.001744 | \n", "
| 9 | \n", "0.898134 | \n", "0.006197 | \n", "0.370832 | \n", "0.181402 | \n", "0.010727 | \n", "0.326783 | \n", "0.002029 | \n", "
| 10 | \n", "1.231645 | \n", "0.017721 | \n", "0.510358 | \n", "0.223078 | \n", "0.014288 | \n", "0.460788 | \n", "0.005255 | \n", "
| 11 | \n", "1.781211 | \n", "0.017318 | \n", "0.628123 | \n", "0.400859 | \n", "0.021470 | \n", "0.709611 | \n", "0.003593 | \n", "
| 12 | \n", "2.202862 | \n", "0.005997 | \n", "0.727173 | \n", "0.493930 | \n", "0.022408 | \n", "0.948569 | \n", "0.004500 | \n", "
| 13 | \n", "2.756144 | \n", "0.006344 | \n", "0.848810 | \n", "0.559102 | \n", "0.027787 | \n", "1.308449 | \n", "0.005416 | \n", "
| 14 | \n", "3.993149 | \n", "0.007872 | \n", "1.286562 | \n", "0.699052 | \n", "0.121875 | \n", "1.866614 | \n", "0.010422 | \n", "
| 15 | \n", "4.700541 | \n", "0.009332 | \n", "1.295280 | \n", "0.731292 | \n", "0.113867 | \n", "2.538433 | \n", "0.011786 | \n", "
| 16 | \n", "6.373810 | \n", "0.010733 | \n", "1.524221 | \n", "0.915396 | \n", "0.123134 | \n", "3.376400 | \n", "0.423174 | \n", "
| 17 | \n", "7.550553 | \n", "0.014175 | \n", "1.860752 | \n", "1.115186 | \n", "0.139940 | \n", "4.407107 | \n", "0.012942 | \n", "
| 18 | \n", "9.188759 | \n", "0.009911 | \n", "2.084367 | \n", "1.242440 | \n", "0.135266 | \n", "5.694486 | \n", "0.021989 | \n", "
| 19 | \n", "11.553041 | \n", "0.011360 | \n", "2.376985 | \n", "1.377563 | \n", "0.148670 | \n", "7.614944 | \n", "0.022871 | \n", "
| 20 | \n", "18.739314 | \n", "0.016116 | \n", "2.594794 | \n", "1.746175 | \n", "0.167113 | \n", "14.191557 | \n", "0.022820 | \n", "