{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### comparison of inter-model and internal variabilities"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import copy\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import netCDF4 as nc\n",
    "import pandas as pd\n",
    "import sys\n",
    "import copy\n",
    "fontsize = 18\n",
    "ppm2GtCO2 = 2.124/0.272912\n",
    "sys.path.append('../')\n",
    "from my_io import Figure1\n",
    "import my_io\n",
    "def ens_values(df_list,var_name):\n",
    "    # df_list: a list of DataFrame\n",
    "    yrstart = 2015\n",
    "    diff_realizaions = [] # (nreal,nyear)\n",
    "    for ireal in range(len(df_list)):\n",
    "        diff_realizaions.append([])\n",
    "    for iyear in range(yrstart,2100):\n",
    "        for ireal in range(len(df_list)):\n",
    "            diff_realizaions[ireal].append(df_list[ireal][var_name].loc[iyear])           \n",
    "    diff_realizaions = np.array(diff_realizaions)\n",
    "    ens_mean = np.average(diff_realizaions,axis=0)\n",
    "    ens_min = np.min(diff_realizaions,axis=0)\n",
    "    ens_max = np.max(diff_realizaions,axis=0)\n",
    "    ens_stddev = np.std(diff_realizaions,axis=0)\n",
    "    yrindex = np.array(range(yrstart,2100)) \n",
    "    df_ens = pd.DataFrame(data=ens_max - ens_min, index=yrindex, columns=['ens_range'])\n",
    "    df_ens['ens_mean'] = ens_mean\n",
    "    df_ens['ens_min'] = ens_min\n",
    "    df_ens['ens_max'] = ens_max\n",
    "    return df_ens"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ACCESS-ESM1-5 C0\n",
      "CESM2 C1\n",
      "CanESM5 C2\n",
      "FOCI C3\n",
      "MIROC-ES2L C4\n",
      "MPI-ESM1-2-LR C5\n",
      "NorESM2-LM C6\n",
      "UKESM1-0-LL C7\n"
     ]
    }
   ],
   "source": [
    "model_list = ['ACCESS-ESM1-5', 'CESM2', 'CanESM5', \n",
    "              'FOCI', 'MIROC-ES2L', 'MPI-ESM1-2-LR',\n",
    "              'NorESM2-LM','UKESM1-0-LL']\n",
    "color_list = []\n",
    "for imodel in range(len(model_list)):\n",
    "    color_list.append('C'+str(imodel))\n",
    "    print(model_list[imodel],color_list[imodel])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# var_name = 'nbp'\n",
    "# yrstart_range = 2040\n",
    "# yrend_range = 2060"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# # REF, OAE-REF, AR-REF\n",
    "# stddev_list_intermodel_nbp = [[],[],[]]\n",
    "# stddev_list_FOCI_nbp = [[],[],[]]\n",
    "# stddev_list_MPIESM_nbp = [[],[],[]]\n",
    "# stddev_list_ACCESS_nbp = [[],[],[]]\n",
    "# stddev_list_intermodel_fgco2 = [[],[],[]]\n",
    "# stddev_list_FOCI_fgco2 = [[],[],[]]\n",
    "# stddev_list_MPIESM_fgco2 = [[],[],[]]\n",
    "# stddev_list_ACCESS_fgco2 = [[],[],[]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_intermodel(var_name):\n",
    "    df_ano = [[],[]]\n",
    "    df_REF = []\n",
    "    for imodel in range(len(model_list)):\n",
    "        if model_list[imodel]=='FOCI':\n",
    "            expnamelist = ['CC104','CC105','CC106','HW002','HW005','HW006','HW003','HW007','HW008']\n",
    "            dflist = []\n",
    "            for expname in expnamelist:\n",
    "                dflist.append( pd.read_csv('../csv/' + expname + '_' + var_name + '.csv',index_col='year'))\n",
    "            # only the first member is used for intermodel variability\n",
    "            df_ano[0].append(dflist[3]-dflist[0]) # OAE-REF\n",
    "            df_ano[1].append(dflist[6]-dflist[0]) # AFF-REF\n",
    "            df_REF.append(dflist[0]) # REF\n",
    "        elif model_list[imodel]=='MPI-ESM1-2-LR':\n",
    "            fig1=Figure1(var_name,'OAE')\n",
    "            fig1.read_MPIESM()\n",
    "            df_ano[0].append( (fig1.dflist[1][0]-fig1.dflist[0][0])) # OAE-REF\n",
    "            # df_REF.append((fig1.dflist[0][0] + fig1.dflist[0][1] + fig1.dflist[0][2]) / 3.) # REF\n",
    "            ###\n",
    "            # only one realization\n",
    "            df_REF.append(fig1.dflist[0][0])\n",
    "            ###\n",
    "            fig1=Figure1(var_name,'AFF')\n",
    "            fig1.read_MPIESM()\n",
    "            df_ano[1].append( fig1.dflist[2][0]-fig1.dflist[0][0]) # AFF-REF\n",
    "        else:\n",
    "            if var_name=='temp2':\n",
    "                var_name = 'tas'\n",
    "            fig1=Figure1(var_name,'OAE')\n",
    "            fig1.read_model(model_list[imodel])\n",
    "            df_REF.append(fig1.dflist[0][0])\n",
    "            try:\n",
    "                df_ano[1].append(fig1.dflist[2][0]-fig1.dflist[0][0])\n",
    "            except:\n",
    "                df_ano[1].append([])\n",
    "\n",
    "            try:\n",
    "                df_ano[0].append(fig1.dflist[1][0]-fig1.dflist[0][0])\n",
    "            except:\n",
    "                df_ano[0].append([])\n",
    "            if var_name=='tas':\n",
    "                var_name = 'temp2'\n",
    "    return df_REF,df_ano"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_ensemble(df_REF,df_ano):\n",
    "    stddev_list = [[],[],[]]\n",
    "    for idf in range(len(df_REF)):\n",
    "        stddev_list[0].append(df_REF[idf].loc[2040:2060].mean()[0])\n",
    "#     print('REF stddev',len(stddev_list[0]),np.array(stddev_list[0]).std())\n",
    "    ####\n",
    "    for idf in range(len(df_ano[0])):\n",
    "        # available models. unavailable models are [] so len is zero\n",
    "        if len(df_ano[0][idf])!=0:\n",
    "            stddev_list[1].append(df_ano[0][idf].loc[2040:2060].mean()[0])\n",
    "#     print('OAE-REF stddev',len(stddev_list[1]),np.array(stddev_list[1]).std())\n",
    "    ##\n",
    "    for idf in range(len(df_ano[1])):\n",
    "        if len(df_ano[1][idf])!=0:\n",
    "            stddev_list[2].append(df_ano[1][idf].loc[2040:2060].mean()[0])\n",
    "#     print('A/R-REF stddev',len(stddev_list[2]),np.array(stddev_list[2]).std())\n",
    "    return stddev_list\n",
    "    \n",
    "# for var_name in ['nbp','fgco2']:\n",
    "#     df_REF, df_ano = get_intermodel(var_name)\n",
    "#     stddev_list_inter = get_ensemble(df_REF,df_ano)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_internal_FOCI(var_name):\n",
    "    df_ano = [[],[]]\n",
    "    df_REF = []\n",
    "    fig1=Figure1(var_name,'BOTH')\n",
    "    fig1.read_FOCI()\n",
    "    for ii in range(3):\n",
    "        diff = fig1.dflist[1][ii] - fig1.dflist[0][ii]\n",
    "        df_ano[0].append(diff)\n",
    "        diff = fig1.dflist[2][ii] - fig1.dflist[0][ii]\n",
    "        df_ano[1].append(diff)\n",
    "        df_REF.append(fig1.dflist[0][ii])\n",
    "    return df_REF,df_ano\n",
    "#######\n",
    "# var_name = 'nbp'\n",
    "# df_REF,df_ano = get_internal_FOCI(var_name)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_internal_MPIESM(var_name):\n",
    "    df_ano = [[],[]]\n",
    "    df_REF = []\n",
    "    fig1=Figure1(var_name,'OAE')\n",
    "    fig1.read_MPIESM()\n",
    "    for ii in range(3):\n",
    "        diff = fig1.dflist[1][ii] - fig1.dflist[0][ii]\n",
    "        df_ano[0].append(diff)\n",
    "        df_REF.append(fig1.dflist[0][ii])\n",
    "    #########\n",
    "    fig1=Figure1(var_name,'AFF')\n",
    "    fig1.read_MPIESM()\n",
    "    for ii in range(3):\n",
    "        diff = fig1.dflist[2][ii] - fig1.dflist[0][ii]\n",
    "        df_ano[1].append(diff)\n",
    "    return df_REF,df_ano\n",
    "#######\n",
    "# var_name = 'nbp'\n",
    "# df_REF,df_ano = get_internal_MPIESM(var_name)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_internal_ACCESS(var_name):\n",
    "    if var_name=='temp2':\n",
    "        var_name = 'tas'\n",
    "    df_ano = [[],[]]\n",
    "    df_REF = []\n",
    "    fig1=my_io.Figure1(var_name,'foo')\n",
    "    fig1.read_ACCESS_ensemble(debug=True)\n",
    "    for ii in range(10):\n",
    "        diff = fig1.dflist[1][ii] - fig1.dflist[0][ii]\n",
    "        df_ano[1].append(diff)\n",
    "        df_REF.append(fig1.dflist[0][ii])\n",
    "    return df_REF,df_ano"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<module 'my_io' from '/home/shkhwwey/OAE/CDRMIP_all_models/../my_io.py'>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import importlib\n",
    "importlib.reload(my_io)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_internal_NorESM(var_name):\n",
    "    if var_name=='temp2':\n",
    "        var_name = 'tas'\n",
    "    df_ano = [[],[]]\n",
    "    df_REF = []\n",
    "    fig1=my_io.Figure1(var_name,'foo')\n",
    "    fig1.read_NorESM_ensemble(debug=True)\n",
    "    for ii in range(3):\n",
    "        diff = fig1.dflist[1][ii] - fig1.dflist[0][0]\n",
    "        df_ano[0].append(diff)\n",
    "        df_REF.append(fig1.dflist[0][0])\n",
    "    return df_REF,df_ano"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " Error reading esm-ssp585-ocn-alk nbp for ACCESS-ESM1-5!\n",
      " Error reading esm-ssp585-ocn-alk nbp for CESM2!\n",
      " Error reading esm-ssp585-ocn-alk nbp for CanESM5!\n",
      " Error reading esm-ssp585-ocn-alk nbp for MIROC-ES2L!\n",
      " Error reading esm-ssp585-ssp126Lu nbp for NorESM2-LM!\n",
      "Error reading HW013 nbp!\n",
      "Error reading HW012 nbp!\n",
      "Error reading HW011 nbp!\n",
      "Error reading HW022 nbp!\n",
      "Error reading HW023 nbp!\n",
      "Error reading HW024 nbp!\n",
      "Error reading HW028 nbp!\n",
      "Error reading HW032 nbp!\n",
      "Error reading HW033 nbp!\n",
      "Error reading HW029 nbp!\n",
      "Error reading HW030 nbp!\n",
      "Error reading HW031 nbp!\n",
      "Error reading HW034 nbp!\n",
      "Error reading HW035 nbp!\n",
      "Error reading HW036 nbp!\n",
      "Error reading HW037 nbp!\n",
      "Error reading HW038 nbp!\n",
      "Error reading HW039 nbp!\n",
      "Error reading HW040 nbp!\n",
      "Error reading HW041 nbp!\n",
      "Error reading HW042 nbp!\n",
      " Error reading esm-ssp585-ocn-alk fgco2 for ACCESS-ESM1-5!\n",
      " Error reading esm-ssp585-ocn-alk fgco2 for CESM2!\n",
      " Error reading esm-ssp585-ocn-alk fgco2 for CanESM5!\n",
      " Error reading esm-ssp585-ocn-alk fgco2 for MIROC-ES2L!\n",
      " Error reading esm-ssp585-ssp126Lu fgco2 for NorESM2-LM!\n",
      "Error reading HW037 fgco2!\n",
      "Error reading HW038 fgco2!\n",
      "Error reading HW039 fgco2!\n",
      "Error reading HW040 fgco2!\n",
      "Error reading HW041 fgco2!\n",
      "Error reading HW042 fgco2!\n",
      " Error reading esm-ssp585-ocn-alk tas for ACCESS-ESM1-5!\n",
      " Error reading esm-ssp585-ocn-alk tas for CESM2!\n",
      " Error reading esm-ssp585-ocn-alk tas for CanESM5!\n",
      " Error reading esm-ssp585-ocn-alk tas for MIROC-ES2L!\n",
      " Error reading esm-ssp585-ssp126Lu tas for NorESM2-LM!\n",
      "Error reading HW034 temp2!\n",
      "Error reading HW035 temp2!\n",
      "Error reading HW036 temp2!\n",
      "Error reading HW037 temp2!\n",
      "Error reading HW038 temp2!\n",
      "Error reading HW039 temp2!\n",
      "Error reading HW040 temp2!\n",
      "Error reading HW041 temp2!\n",
      "Error reading HW042 temp2!\n"
     ]
    }
   ],
   "source": [
    "# (num_variable, 3, num_members) \n",
    "# num_variable = 2 (nbp, fgco2)\n",
    "# 3 = (REF, OAE-REF, AR-REF)\n",
    "stddev_list_intermodel = []\n",
    "stddev_list_internal_FOCI = []\n",
    "stddev_list_internal_MPIESM = []\n",
    "stddev_list_internal_ACCESS = []\n",
    "stddev_list_internal_NorESM = []\n",
    "\n",
    "for var_name in ['nbp','fgco2','temp2']:\n",
    "    df_REF, df_ano = get_intermodel(var_name)\n",
    "    stddev_list_intermodel.append(get_ensemble(df_REF,df_ano))\n",
    "    df_REF,df_ano = get_internal_FOCI(var_name)\n",
    "    stddev_list_internal_FOCI.append(get_ensemble(df_REF,df_ano))\n",
    "    df_REF,df_ano = get_internal_MPIESM(var_name)\n",
    "    stddev_list_internal_MPIESM.append(get_ensemble(df_REF,df_ano))\n",
    "    df_REF,df_ano = get_internal_ACCESS(var_name)\n",
    "    stddev_list_internal_ACCESS.append(get_ensemble(df_REF,df_ano))\n",
    "    df_REF,df_ano = get_internal_NorESM(var_name)\n",
    "    stddev_list_internal_NorESM.append(get_ensemble(df_REF,df_ano))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "import scipy.stats as stats\n",
    "def f_test(x, y):\n",
    "    x = np.array(x)\n",
    "    y = np.array(y)\n",
    "    f = np.var(x, ddof=1)/np.var(y, ddof=1) #calculate F test statistic \n",
    "    dfn = x.size-1 #define degrees of freedom numerator \n",
    "    dfd = y.size-1 #define degrees of freedom denominator \n",
    "    p = 1-stats.f.cdf(f, dfn, dfd) #find p-value of F test statistic \n",
    "    strout = ''\n",
    "    if p<0.05:\n",
    "        if x.std()>y.std():\n",
    "            strout = '(x variance larger)'\n",
    "    if p>0.95:\n",
    "        if x.std()<y.std():\n",
    "            strout = '(x variance smaller)'\n",
    "#         elif x.std()==y.std():\n",
    "#             strout = '(x and y same dev)'\n",
    "    return f, p, strout\n",
    "exp_name = ['REF','OAE-REF','A/R-REF']\n",
    "var_name = ['nbp','fgco2','temp2']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### nbp vs. fgco2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "comparing nbp vs. fgco2\n",
      "REF\n",
      "intermodel REF (x variance larger)\n",
      "FOCI REF (x variance larger)\n",
      "MPI REF (x variance larger)\n",
      "--------\n",
      "OAE-REF\n",
      "intermodel OAE-REF (x variance larger)\n",
      "FOCI OAE-REF (x variance larger)\n",
      "MPI OAE-REF (x variance larger)\n",
      "--------\n",
      "A/R-REF\n",
      "intermodel A/R-REF (x variance larger)\n",
      "FOCI A/R-REF (x variance larger)\n",
      "MPI A/R-REF (x variance smaller)\n",
      "ACCESS A/R-REF (x variance larger)\n",
      "--------\n"
     ]
    }
   ],
   "source": [
    "print('comparing nbp vs. fgco2')\n",
    "for iexp in range(3):\n",
    "    print(exp_name[iexp])\n",
    "    f_value,p_value,strout = f_test (stddev_list_intermodel[0][iexp],stddev_list_intermodel[1][iexp])\n",
    "    print('intermodel',exp_name[iexp],strout)\n",
    "    f_value,p_value,strout = f_test (stddev_list_internal_FOCI[0][iexp],stddev_list_internal_FOCI[1][iexp])\n",
    "    print('FOCI',exp_name[iexp],strout)\n",
    "    f_value,p_value,strout = f_test (stddev_list_internal_MPIESM[0][iexp],stddev_list_internal_MPIESM[1][iexp])\n",
    "    print('MPI',exp_name[iexp],strout)\n",
    "    if exp_name[iexp]=='A/R-REF':\n",
    "        f_value,p_value,strout = f_test (stddev_list_internal_ACCESS[0][iexp],stddev_list_internal_ACCESS[1][iexp])\n",
    "        print('ACCESS',exp_name[iexp],strout)\n",
    "#     f_value,p_value,strout = f_test (stddev_list_internal_NorESM[0][iexp],stddev_list_internal_NorESM[1][iexp])\n",
    "#     print('NorESM',exp_name[iexp],strout)\n",
    "    print('--------')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### comparing intermodel variability vs. internal variability (FOCI, MPIESM and ACCESS)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "comparing intermodel variability vs. internal variability (FOCI, MPIESM and ACCESS)\n",
      "\n",
      "nbp\n",
      "REF\n",
      "intermodel vs internal (FOCI) REF (x variance larger)\n",
      "intermodel vs internal (MPIESM) REF (x variance larger)\n",
      "----\n",
      "OAE-REF\n",
      "intermodel vs internal (FOCI) OAE-REF \n",
      "intermodel vs internal (MPIESM) OAE-REF \n",
      "----\n",
      "A/R-REF\n",
      "intermodel vs internal (FOCI) A/R-REF \n",
      "intermodel vs internal (MPIESM) A/R-REF (x variance larger)\n",
      "intermodel vs internal (ACCESS) A/R-REF \n",
      "----\n",
      "fgco2\n",
      "REF\n",
      "intermodel vs internal (FOCI) REF (x variance larger)\n",
      "intermodel vs internal (MPIESM) REF (x variance larger)\n",
      "----\n",
      "OAE-REF\n",
      "intermodel vs internal (FOCI) OAE-REF \n",
      "intermodel vs internal (MPIESM) OAE-REF \n",
      "----\n",
      "A/R-REF\n",
      "intermodel vs internal (FOCI) A/R-REF \n",
      "intermodel vs internal (MPIESM) A/R-REF (x variance smaller)\n",
      "intermodel vs internal (ACCESS) A/R-REF \n",
      "----\n",
      "temp2\n",
      "REF\n",
      "intermodel vs internal (FOCI) REF (x variance larger)\n",
      "intermodel vs internal (MPIESM) REF (x variance larger)\n",
      "----\n",
      "OAE-REF\n",
      "intermodel vs internal (FOCI) OAE-REF \n",
      "intermodel vs internal (MPIESM) OAE-REF \n",
      "----\n",
      "A/R-REF\n",
      "intermodel vs internal (FOCI) A/R-REF \n",
      "intermodel vs internal (MPIESM) A/R-REF \n",
      "intermodel vs internal (ACCESS) A/R-REF \n",
      "----\n"
     ]
    }
   ],
   "source": [
    "print('comparing intermodel variability vs. internal variability (FOCI, MPIESM and ACCESS)\\n')\n",
    "for ivar in [0,1,2]:\n",
    "    print(var_name[ivar])\n",
    "    for iexp in range(3):\n",
    "        print(exp_name[iexp])\n",
    "        f_value,p_value,strout = f_test (stddev_list_intermodel[ivar][iexp],stddev_list_internal_FOCI[ivar][iexp])\n",
    "        print('intermodel vs internal (FOCI)',exp_name[iexp],strout)\n",
    "        f_value,p_value ,strout = f_test (stddev_list_intermodel[ivar][iexp],stddev_list_internal_MPIESM[ivar][iexp])\n",
    "        print('intermodel vs internal (MPIESM)',exp_name[iexp],strout)\n",
    "        if exp_name[iexp]=='A/R-REF':\n",
    "            f_value,p_value ,strout = f_test (stddev_list_intermodel[ivar][iexp],stddev_list_internal_ACCESS[ivar][iexp])\n",
    "            print('intermodel vs internal (ACCESS)',exp_name[iexp],strout)\n",
    "#         f_value,p_value ,strout = f_test (stddev_list_intermodel[ivar][iexp],stddev_list_internal_NorESM[ivar][iexp])\n",
    "#         print('intermodel vs internal (NorESM)',exp_name[iexp],strout)\n",
    "#         f_value,p_value,strout = f_test (stddev_list_internal_FOCI[ivar][iexp],stddev_list_intermodel[ivar][iexp])\n",
    "#         print('internal (FOCI) vs intermodel',exp_name[iexp],strout,p_value)\n",
    "        print('----')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### REF vs. anomaly"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "REF vs. anomaly\n",
      "\n",
      "nbp\n",
      "* OAE-REF\n",
      "intermodel OAE-REF (x variance larger)\n",
      "FOCI OAE-REF \n",
      "MPIESM OAE-REF \n",
      "* A/R-REF\n",
      "intermodel A/R-REF (x variance larger)\n",
      "FOCI A/R-REF \n",
      "MPIESM A/R-REF \n",
      "ACCESS A/R-REF \n",
      "---\n",
      "fgco2\n",
      "* OAE-REF\n",
      "intermodel OAE-REF (x variance larger)\n",
      "FOCI OAE-REF (x variance larger)\n",
      "MPIESM OAE-REF (x variance larger)\n",
      "* A/R-REF\n",
      "intermodel A/R-REF (x variance larger)\n",
      "FOCI A/R-REF (x variance larger)\n",
      "MPIESM A/R-REF (x variance smaller)\n",
      "ACCESS A/R-REF (x variance larger)\n",
      "---\n",
      "temp2\n",
      "* OAE-REF\n",
      "intermodel OAE-REF (x variance larger)\n",
      "FOCI OAE-REF (x variance larger)\n",
      "MPIESM OAE-REF (x variance larger)\n",
      "* A/R-REF\n",
      "intermodel A/R-REF (x variance larger)\n",
      "FOCI A/R-REF (x variance larger)\n",
      "MPIESM A/R-REF \n",
      "ACCESS A/R-REF (x variance larger)\n",
      "---\n"
     ]
    }
   ],
   "source": [
    "print('REF vs. anomaly\\n')\n",
    "for ivar in [0,1,2]:\n",
    "    print(var_name[ivar])\n",
    "    for iexp in [1,2]:\n",
    "        print('*',exp_name[iexp])\n",
    "        f_value,p_value,strout = f_test (stddev_list_intermodel[ivar][0],stddev_list_intermodel[ivar][iexp])\n",
    "        print('intermodel',exp_name[iexp],strout)\n",
    "        f_value,p_value,strout = f_test (stddev_list_internal_FOCI[0][0],stddev_list_internal_FOCI[ivar][iexp])\n",
    "        print('FOCI',exp_name[iexp],strout)\n",
    "        f_value,p_value,strout = f_test (stddev_list_internal_MPIESM[0][0],stddev_list_internal_MPIESM[ivar][iexp])\n",
    "        print('MPIESM',exp_name[iexp],strout)\n",
    "        if exp_name[iexp]=='A/R-REF':\n",
    "            f_value,p_value,strout = f_test (stddev_list_internal_ACCESS[0][0],stddev_list_internal_ACCESS[ivar][iexp])\n",
    "            print('ACCESS',exp_name[iexp],strout)\n",
    "#         f_value,p_value,strout = f_test (stddev_list_internal_NorESM[0][0],stddev_list_internal_NorESM[ivar][iexp])\n",
    "#         print('NorESM',exp_name[iexp],strout)\n",
    "    print('---')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### OAE vs. AR"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "OAE-REF vs. A/R-REF\n",
      "nbp\n",
      "intermodel \n",
      "FOCI \n",
      "MPIESM \n",
      "---\n",
      "fgco2\n",
      "intermodel \n",
      "FOCI \n",
      "MPIESM (x variance smaller)\n",
      "---\n",
      "temp2\n",
      "intermodel \n",
      "FOCI \n",
      "MPIESM (x variance smaller)\n",
      "---\n"
     ]
    }
   ],
   "source": [
    "print('OAE-REF vs. A/R-REF')\n",
    "for ivar in [0,1,2]:\n",
    "    print(var_name[ivar])\n",
    "    f_value,p_value,strout = f_test (stddev_list_intermodel[ivar][1],stddev_list_intermodel[ivar][2])\n",
    "    print('intermodel',strout)\n",
    "    f_value,p_value,strout = f_test (stddev_list_internal_FOCI[ivar][1],stddev_list_internal_FOCI[ivar][2])\n",
    "    print('FOCI',strout)\n",
    "    f_value,p_value,strout = f_test (stddev_list_internal_MPIESM[ivar][1],stddev_list_internal_MPIESM[ivar][2])\n",
    "    print('MPIESM',strout)\n",
    "    print('---')\n",
    "    # fgco2\n",
    "#     f_value,p_value = f_test (stddev_list_inter_fgco2[1],stddev_list_inter_fgco2[2])\n",
    "#     if p_value<0.05:\n",
    "#         print('fgco2 inter')\n",
    "#     f_value,p_value = f_test (stddev_list_FOCI_fgco2[1],stddev_list_FOCI_fgco2[2])\n",
    "#     if p_value<0.05:\n",
    "#         print('fgco2 FOCI')\n",
    "#     f_value,p_value = f_test (stddev_list_MPIESM_fgco2[1],stddev_list_MPIESM_fgco2[2])\n",
    "#     if p_value<0.05:\n",
    "#         print('fgco2 MPIESM')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "co2sys",
   "language": "python",
   "name": "co2sys"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
