{"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":"none","dataSources":[{"sourceId":56537,"databundleVersionId":8015876,"sourceType":"competition"}],"dockerImageVersionId":30698,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nfrom matplotlib import pyplot as plt\nimport matplotlib as mpl\n!pip install mpltern\nimport mpltern#三角図プロット\n!pip install ipython\nfrom IPython.display import HTML\nimport matplotlib.animation as anime\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\ntrain_filename=\"/kaggle/input/leap-atmospheric-physics-ai-climsim/train.csv\"\ntest_filename=\"/kaggle/input/leap-atmospheric-physics-ai-climsim/test.csv\"\nsample_filename=\"/kaggle/input/leap-atmospheric-physics-ai-climsim/sample_submission.csv\"\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-05-01T07:37:32.086427Z","iopub.execute_input":"2024-05-01T07:37:32.086894Z","iopub.status.idle":"2024-05-01T07:38:05.468761Z","shell.execute_reply.started":"2024-05-01T07:37:32.086857Z","shell.execute_reply":"2024-05-01T07:38:05.467205Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cmap=mpl.cm.plasma\ndef vectordist_1(arr2d,name,scale=\"linear\",alp=0.01,eps=0.0001):\n    if scale==\"log\":\n        arr2d=np.log(arr2d+eps)\n        name=f\"{scale}({name})\"\n\n    for i in range(len(arr)):\n        plt.plot(arr2d[i,:],alpha=alp,color=\"#000000\")\n    plt.xlabel(\"level\")\n    plt.ylabel(name)\n    plt.show()\n    \ndef vectordist_2(arr2d,name,rng=None,scale=\"linear\",eps=0.0001):\n    if rng is None:\n        rng=(arr2d.min(),arr2d.max())\n    if scale==\"log\":\n        arr2d=np.log(arr2d+eps)\n        rng=[np.log(rng[0]+eps),np.log(rng[1]+eps)]\n        name=f\"{scale}({name})\"\n        \n    norm=mpl.colors.Normalize(vmin=rng[0],vmax=rng[1])\n    fig=plt.figure()\n    subfigs=fig.subfigures(2,1,height_ratios=(10,1))\n    n=int(len(arr2d)/500)\n    axes=subfigs[0].subplots(1,n,sharey=True)\n    for i in range(n):\n        im=axes[i].imshow(arr2d[i*500:(i+1)*500,:],cmap=cmap,norm=norm)\n    axes[0].set_ylabel(\"data num\")\n    ax=subfigs[1].add_subplot()\n    plt.colorbar(mpl.cm.ScalarMappable(norm=norm,cmap=cmap),orientation='horizontal',cax=ax).set_label(name)\n    plt.show()\n    \ndef vectordist_3(arr2d,name,rng=None,scale=\"linear\",distscale=\"linear\",eps=0.0001):\n    if rng is None:\n        rng=(arr2d.min(),arr2d.max())\n    if scale==\"log\":\n        arr2d=np.log(arr2d+eps)\n        rng=[np.log(rng[0]+eps),np.log(rng[1]+eps)]\n        name=f\"{scale}({name})\"\n    \n    im=np.ndarray((100,60))\n    for i in range(60):\n        im[:,i]=np.histogram(arr2d[:,i],range=rng,bins=100)[0]/len(arr2d)\n    if distscale==\"linear\":im=im/(im.sum(axis=0)+0.0001)\n    else:im=np.log(im/(im.sum(axis=0)+0.0001)+0.0001)\n    _=plt.imshow(im,cmap=cmap)\n    _=plt.yticks(np.linspace(0,100,5),[f\"{i:.5E}\" for i in np.linspace(rng[0],rng[1],5)])\n    _=plt.colorbar()\n    plt.show()\n    \ndef vectordist_4(arr2d,name,scale=\"linear\",alp=0.01,eps=0.0001,fps=100):\n    if scale==\"log\":\n        arr2d=np.log(arr2d+eps)\n        name=f\"{scale}({name})\"\n\n    fig=plt.figure()\n    ax=plt.axes()\n    ax.set_xlabel(\"level\")\n    ax.set_ylabel(name)\n    def plot(i):\n        ax.cla()\n        ax.plot(arr2d[i,:],color=\"#000000\")\n    anim=anime.FuncAnimation(fig,plot,frames=len(arr2d))\n    plt.close(fig)\n    return anim.to_jshtml(fps=fps)\n    ","metadata":{"execution":{"iopub.status.busy":"2024-05-01T07:42:18.029458Z","iopub.execute_input":"2024-05-01T07:42:18.029964Z","iopub.status.idle":"2024-05-01T07:42:18.053561Z","shell.execute_reply.started":"2024-05-01T07:42:18.029919Z","shell.execute_reply":"2024-05-01T07:42:18.052497Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# **1) メタデータおよび文献**","metadata":{}},{"cell_type":"code","source":"file=open(train_filename,\"r\")\nheaders=file.readline().split(\",\")\nstatidcs=slice(0,361)\n# [state]  t         :: 温度　　　　　　　　　　　　　　　　　　　0 (top) - 59 (bottom)\ntidcs=slice(0,60)\n# [state]  q0001     :: 湿度　　　　　　　　　　　　　　　　　　　0 (top) - 59 (bottom)\nhidcs=slice(60,120)\n# [state]  q0002     :: 雲水混合比　　　　　　　　　　　　　　　　0 (top) - 59 (bottom)\nrlidcs=slice(120,180)\n# [state]  q0003     :: 雲雪混合比　　　　　　　　　　　　　　　　0 (top) - 59 (bottom)\nriidcs=slice(180,240)\n# [state]  u         :: 東西風の速度　　　　　　　　　　　　　　　0 (top) - 59 (bottom)\n# see https://andymaypetrophysicist.com/wp-content/uploads/2022/08/zonal_winds.pdf\nzfidcs=slice(240,300)\n# [state]  v         :: 南北風の速度　　　　　　　　　　　　　　　0 (top) - 59 (bottom)\n# see https://andymaypetrophysicist.com/wp-content/uploads/2022/08/zonal_winds.pdf\nmfidcs=slice(300,360)\n# [state]  ps        :: 地表面での大気圧\n# see https://gcos.wmo.int/sites/default/files/surface_pressure_ecv_factsheet_201905.pdf?H5W7c_91ogAmxmygVF9a6sjV5_YJayEg\nspridx=360\n# [pbuf]   SOLIN     :: 太陽の放射照度\nsoiidx=361\n# see https://en.wikipedia.org/wiki/Solar_irradiance\n# [pbuf]   LHFLX     :: 潜熱流\nlhfidx=362\n# see https://huksefluxusa.com/learn/latent-heat-flux/\n# [pbuf]   SHFLX     :: 顕熱流\nshfidx=363\n# [pbuf]   TAUX      :: 地表面応力（東西方向）\nzssidx=364\n# [pbuf]   TAUY      :: 地表面応力（南北方向）\nmssidx=365\n# [pbuf]   COSZRS    :: 太陽の天頂角\nszaidx=366\n# [cam in] ALDIF     :: 長波長放射の拡散性反射率\ndflidx=367\n# [cam in] ALDIR     :: 長波長放射の方向性反射率\ndrlidx=368\n# [cam in] ASDIF     :: 短波長放射の拡散性反射率\ndfsidx=369\n# [cam in] ASDIR     :: 短波長放射の方向性反射率\ndrsidx=370\n# [cam in] LWUP      :: 上向き長波長放射熱流\nulfidx=371\n# [cam in] ICEFRAC   :: 海氷面積比率\niafidx=372\n# [cam in] LANDFRAC  :: 地表面積比率\nlafidx=373\n# [cam in] OCNFRAC   :: 海水面積比率\noafidx=374\n# [cam in] SNOWHLAND :: 陸上の積雪量\nsdlidx=375\n# [pbuf]   ozone     :: オゾンの体積混合比　　　　　　　　　　　　0 (top) - 59 (bottom)\nozidcs=slice(376,436)\n# [pbuf]   CH4       :: メタンの体積混合比　　　　　　　　　　　　0 (top) - 59 (bottom)\nchidcs=slice(436,496)\n# [pbuf]   N2O       :: 窒素酸化物の体積混合比　　　　　　　　　　0 (top) - 59 (bottom)\nnoidcs=slice(496,556)\n# [ptend]  t         :: 温度変化率　　　　　　　　　　　　　　　　0 (top) - 59 (bottom)\nhtidcs=slice(556,616)\n# [ptend]  q0001     :: 湿度変化率　　　　　　　　　　　　　　　　0 (top) - 59 (bottom)\nmtidcs=slice(616,676)\n# [ptend]  q0002     :: 雲水混合比の変化率　　　　　　　　　　　　0 (top) - 59 (bottom)\nltidcs=slice(676,736)\n# [ptend]  q0003     :: 雲氷混合比の変化率　　　　　　　　　　　　0 (top) - 59 (bottom)\nitidcs=slice(736,796)\n# [ptend]  u         :: 東西風の速度変化率　　　　　　　　　　　　0 (top) - 59 (bottom)\nzaidcs=slice(796,856)\n# [ptend]  v         :: 南北風の速度変化率　　　　　　　　　　　　0 (top) - 59 (bottom)\nmaidcs=slice(856,916)\n# [camout] NETSW     :: 地表面における正味の短波長放射熱流\nnsfidx=916\n# [camout] FLWDS     :: 地表面における下向き長波長放射熱流\ndlfidx=917\n# [camout] PRECSC    :: 降雪率\nsnridx=918\n# [camout] PRECC     :: 降雨率\nrnridx=919\n# [camout] SOLS      :: 太陽からの方向性可視光線による下向きの熱流\ndvdidx=920\n# [camout] SOLL      :: 太陽からの方向性近赤外光線による下向きの熱流\ndididx=921\n# [camout] SOLSD     :: 太陽からの拡散性可視光線による下向きの熱流\nddvidx=922\n# [camout] SOLLD     :: 太陽からの拡散性近赤外光線による下向きの熱流\nddiidx=923\n\n#https://www.ecmwf.int/sites/default/files/elibrary/2016/16648-part-iv-physical-processes.pdf#section.3.6\n#provides useful overall description for beginners\n\n#[日本語文献]\n#http://www.rain.hyarc.nagoya-u.ac.jp/~tsuboki/cress_html/guide_jpn/section04.pdf\n#https://www.metsoc.jp/default/wp-content/uploads/2020/08/SS2020_04.pdf\n#↑↑雲水混合比，雲氷混合比など降水に関するパラメタリゼーション\n#https://www.asahi-net.or.jp/~rk7j-kndu/kenkyu/ke03.html#:~:text=%E5%A4%AA%E9%99%BD%E3%82%A8%E3%83%8D%E3%83%AB%E3%82%AE%E3%83%BC%E3%81%AE%E5%A4%A7%E9%83%A8%E5%88%86,%E7%8F%BE%E8%B1%A1%E3%82%92%E8%AA%BF%E3%81%B9%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86%E3%80%82\n#https://www.jstage.jst.go.jp/article/agrmet1943/48/3/48_3_265/_pdf\n#↑↑地表面における熱収支に関するパラメタリゼーション\n#http://www.metsoc-hokkaido.jp/saihyo/pdf/saihyo33/saihyo33-045.pdf\n\n","metadata":{"execution":{"iopub.status.busy":"2024-05-01T07:39:58.084797Z","iopub.execute_input":"2024-05-01T07:39:58.086648Z","iopub.status.idle":"2024-05-01T07:39:58.107312Z","shell.execute_reply.started":"2024-05-01T07:39:58.086599Z","shell.execute_reply":"2024-05-01T07:39:58.105614Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 2) **ベクトル量**","metadata":{}},{"cell_type":"code","source":"arr=np.array([])\narrs=[]\nfor i in range(10):\n    ar=np.array([file.readline().split(\",\") for _ in range(500)])[:,1:].astype(\"float\")\n    arr=np.append(arr.reshape(-1,ar.shape[1]),ar,axis=0)\n    arrs.append(ar)\n    print(ar.shape)","metadata":{"execution":{"iopub.status.busy":"2024-05-01T07:40:10.545512Z","iopub.execute_input":"2024-05-01T07:40:10.545972Z","iopub.status.idle":"2024-05-01T07:40:19.187523Z","shell.execute_reply.started":"2024-05-01T07:40:10.545929Z","shell.execute_reply":"2024-05-01T07:40:19.186548Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 1. 温度分布","metadata":{}},{"cell_type":"code","source":"vectordist_1(arr[:,tidcs],\"tempreture\")\nvectordist_2(arr[:,tidcs],\"tempreture\")\nvectordist_3(arr[:,tidcs],\"tempreture\",scale=\"log\")\nHTML(vectordist_4(arr[::50,tidcs],\"tempreture\",scale=\"log\",fps=10))","metadata":{"execution":{"iopub.status.busy":"2024-05-01T07:45:25.690379Z","iopub.execute_input":"2024-05-01T07:45:25.691599Z","iopub.status.idle":"2024-05-01T07:45:49.19432Z","shell.execute_reply.started":"2024-05-01T07:45:25.691553Z","shell.execute_reply":"2024-05-01T07:45:49.192469Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 2. 湿度分布","metadata":{}},{"cell_type":"code","source":"vectordist_1(arr[:,hidcs],\"humidity\",scale=\"log\")\nvectordist_2(arr[:,hidcs],\"humidity\")\nvectordist_3(arr[:,hidcs],\"humidity\",scale=\"log\",distscale=\"log\")","metadata":{"execution":{"iopub.status.busy":"2024-05-01T05:26:42.430723Z","iopub.execute_input":"2024-05-01T05:26:42.431158Z","iopub.status.idle":"2024-05-01T05:26:50.602535Z","shell.execute_reply.started":"2024-05-01T05:26:42.431124Z","shell.execute_reply":"2024-05-01T05:26:50.601309Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 3. 雲水混合比","metadata":{}},{"cell_type":"code","source":"vectordist_1(arr[:,rlidcs],\"liquid mixing ratio\",scale=\"linear\")\nvectordist_2(arr[:,rlidcs],\"liquid mixing ratio\",scale=\"log\",eps=10**-9)","metadata":{"execution":{"iopub.status.busy":"2024-05-01T05:30:45.271965Z","iopub.execute_input":"2024-05-01T05:30:45.272364Z","iopub.status.idle":"2024-05-01T05:30:52.601954Z","shell.execute_reply.started":"2024-05-01T05:30:45.272334Z","shell.execute_reply":"2024-05-01T05:30:52.600768Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 4. Ice mixing ratio Distribution","metadata":{}},{"cell_type":"code","source":"lo=10**-7\nrng=(np.log10(arr[:,riidcs].min()+lo*1.01),np.log10(arr[:,riidcs].max()+lo))\n\nfor i in range(len(arr)):\n    plt.plot(arr[i,riidcs],alpha=0.01,color=\"#7F7FFF\")\nplt.show()\n\ncmap=mpl.cm.plasma\nnorm=mpl.colors.Normalize(vmin=rng[0],vmax=rng[1])\nfig=plt.figure()\nsubfigs=fig.subfigures(2,1,height_ratios=(10,1))\n\naxes=subfigs[0].subplots(1,10,sharey=True)\nfor i in range(0,10):\n    im=axes[i].imshow(np.log10(arrs[i][:,riidcs]+lo),cmap=cmap,norm=norm,)\nax=subfigs[1].add_subplot()\nplt.colorbar(mpl.cm.ScalarMappable(norm=norm,cmap=cmap),orientation='horizontal',cax=ax)\nplt.show()\n    \nprint(\"↑↑ 対数雲氷混合比の層分布\")\nprint(\"   横軸：層番号 (最上層が0), 縦軸：データ番号\")\nprint(\"   色：対数雲氷混合比\")\n\nim=np.ndarray((100,60))\nfor i in range(60):\n    im[:,i]=np.histogram(np.log10(arr[:,riidcs][:,i]+lo),range=rng,bins=100)[0]\nim=im/(im.sum(axis=0)+0.000001)\n_=plt.imshow(np.log10(im+lo),cmap=cmap)\n_=plt.yticks(np.linspace(0,100,5),\n             [\"{:.4f}\".format(i) for i in np.linspace(rng[0],rng[1],5)]\n            )\n_=plt.colorbar()\nplt.show()\n    \nprint(\"↑↑ 層ごとの対数雲氷混合比分布\")\nprint(\"   横軸：対数雲氷混合比, 縦軸：層番号 (最上層が0)\")\nprint(\"   色：分布率（対数）\")","metadata":{"execution":{"iopub.status.busy":"2024-05-01T03:46:07.143716Z","iopub.execute_input":"2024-05-01T03:46:07.144347Z","iopub.status.idle":"2024-05-01T03:46:15.35616Z","shell.execute_reply.started":"2024-05-01T03:46:07.144296Z","shell.execute_reply":"2024-05-01T03:46:15.354111Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 5. Zonal wind speed Distribution","metadata":{}},{"cell_type":"code","source":"rng=(arr[:,zfidcs].min(),arr[:,zfidcs].max())\n\nfor i in range(len(arr)):\n    plt.plot(arr[i,zfidcs],alpha=0.01,color=\"#7F7FFF\")\nplt.show()\n\ncmap=mpl.cm.plasma\nnorm=mpl.colors.Normalize(vmin=rng[0],vmax=rng[1])\nfig=plt.figure()\nsubfigs=fig.subfigures(2,1,height_ratios=(10,1))\n\naxes=subfigs[0].subplots(1,10,sharey=True)\nfor i in range(0,10):\n    im=axes[i].imshow(arrs[i][:,zfidcs],cmap=cmap,norm=norm,)\nax=subfigs[1].add_subplot()\nplt.colorbar(mpl.cm.ScalarMappable(norm=norm,cmap=cmap),orientation='horizontal',cax=ax)\nplt.show()\n    \nprint(\"↑↑ 東西風速度の層分布\")\nprint(\"   横軸：層番号 (最上層が0), 縦軸：データ番号\")\nprint(\"   色：東西風速度\")\n    \n\nim=np.ndarray((100,60))\nfor i in range(60):\n    im[:,i]=np.histogram(arr[:,zfidcs][:,i],range=rng,bins=100)[0]/len(arr)\nim=im/im.sum(axis=0)\n_=plt.imshow(im,cmap=cmap)\n_=plt.yticks(np.linspace(0,100,5),np.linspace(rng[0],rng[1],5).astype(\"int\"))\n_=plt.colorbar()\nplt.show()\n    \nprint(\"↑↑ 層ごとの東西風速度分布\")\nprint(\"   横軸：東西風速度, 縦軸：層番号 (最上層が0)\")\nprint(\"   色：分布率\")\n    \n","metadata":{"execution":{"iopub.status.busy":"2024-05-01T03:46:15.358739Z","iopub.execute_input":"2024-05-01T03:46:15.359319Z","iopub.status.idle":"2024-05-01T03:46:23.668486Z","shell.execute_reply.started":"2024-05-01T03:46:15.359269Z","shell.execute_reply":"2024-05-01T03:46:23.667262Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 6. Meridional wind speed Distribution","metadata":{}},{"cell_type":"code","source":"rng=(arr[:,mfidcs].min(),arr[:,mfidcs].max())\n\nfor i in range(len(arr)):\n    plt.plot(arr[i,mfidcs],alpha=0.01,color=\"#7F7FFF\")\nplt.show()\n\ncmap=mpl.cm.plasma\nnorm=mpl.colors.Normalize(vmin=rng[0],vmax=rng[1])\nfig=plt.figure()\nsubfigs=fig.subfigures(2,1,height_ratios=(10,1))\n\naxes=subfigs[0].subplots(1,10,sharey=True)\nfor i in range(0,10):\n    im=axes[i].imshow(arrs[i][:,mfidcs],cmap=cmap,norm=norm,)\nax=subfigs[1].add_subplot()\nplt.colorbar(mpl.cm.ScalarMappable(norm=norm,cmap=cmap),orientation='horizontal',cax=ax)\nplt.show()\n    \nprint(\"↑↑ 南北風速度の層分布\")\nprint(\"   横軸：層番号 (最上層が0), 縦軸：データ番号\")\nprint(\"   色：南北風速度\")\n\nim=np.ndarray((100,60))\nfor i in range(60):\n    im[:,i]=np.histogram(arr[:,mfidcs][:,i],range=rng,bins=100)[0]/len(arr)\nim=im/im.sum(axis=0)\n_=plt.imshow(im,cmap=cmap)\n_=plt.yticks(np.linspace(0,100,5),np.linspace(rng[0],rng[1],5).astype(\"int\"))\n_=plt.colorbar()\nplt.show()\n    \nprint(\"↑↑ 層ごとの南北風速度分布\")\nprint(\"   横軸：南北風速度, 縦軸：層番号 (最上層が0)\")\nprint(\"   色：分布率\")","metadata":{"execution":{"iopub.status.busy":"2024-05-01T03:46:23.670004Z","iopub.execute_input":"2024-05-01T03:46:23.670387Z","iopub.status.idle":"2024-05-01T03:46:32.009781Z","shell.execute_reply.started":"2024-05-01T03:46:23.670356Z","shell.execute_reply":"2024-05-01T03:46:32.008463Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 7. Ozone distribution","metadata":{}},{"cell_type":"code","source":"lo=0\nrng=(np.log10(arr[:,ozidcs].min()+lo),np.log10(arr[:,ozidcs].max()+lo))\n\nfor i in range(len(arr)):\n    plt.plot(arr[i,ozidcs],alpha=0.01,color=\"#7F7FFF\")\nplt.show()\n\ncmap=mpl.cm.plasma\nnorm=mpl.colors.Normalize(vmin=rng[0],vmax=rng[1])\nfig=plt.figure()\nsubfigs=fig.subfigures(2,1,height_ratios=(10,1))\n\naxes=subfigs[0].subplots(1,10,sharey=True)\nfor i in range(0,10):\n    im=axes[i].imshow(np.log10(arrs[i][:,ozidcs]+lo),cmap=cmap,norm=norm,)\nax=subfigs[1].add_subplot()\nplt.colorbar(mpl.cm.ScalarMappable(norm=norm,cmap=cmap),orientation='horizontal',cax=ax)\nplt.show()\n    \nprint(\"↑↑ 対数オゾン体積混合率の層分布\")\nprint(\"   横軸：層番号 (最上層が0), 縦軸：データ番号\")\nprint(\"   色：対数オゾン体積混合率\")\n\nim=np.ndarray((100,60))\nfor i in range(60):\n    im[:,i]=np.histogram(np.log10(arr[:,ozidcs][:,i]+lo),range=rng,bins=100)[0]\nim=im/(im.sum(axis=0)+0.000001)\n_=plt.imshow(im,cmap=cmap)\n_=plt.yticks(np.linspace(0,100,5),\n             [\"{:.4f}\".format(i) for i in np.linspace(rng[0],rng[1],5)]\n            )\n_=plt.colorbar()\nplt.show()\n    \nprint(\"↑↑ 層ごとの対数オゾン体積混合率\")\nprint(\"   横軸：対数オゾン体積混合率, 縦軸：層番号 (最上層が0)\")\nprint(\"   色：対数分布率\")","metadata":{"execution":{"iopub.status.busy":"2024-05-01T03:46:32.01627Z","iopub.execute_input":"2024-05-01T03:46:32.016751Z","iopub.status.idle":"2024-05-01T03:46:40.39522Z","shell.execute_reply.started":"2024-05-01T03:46:32.016713Z","shell.execute_reply":"2024-05-01T03:46:40.394002Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 8. Methane Distribution","metadata":{}},{"cell_type":"code","source":"lo=0\nrng=(np.log10(arr[:,chidcs].min()+lo),np.log10(arr[:,chidcs].max()+lo))\n\nfor i in range(len(arr)):\n    plt.plot(arr[i,chidcs],alpha=0.01,color=\"#7F7FFF\")\nplt.show()\n\ncmap=mpl.cm.plasma\nnorm=mpl.colors.Normalize(vmin=rng[0],vmax=rng[1])\nfig=plt.figure()\nsubfigs=fig.subfigures(2,1,height_ratios=(10,1))\n\naxes=subfigs[0].subplots(1,10,sharey=True)\nfor i in range(0,10):\n    im=axes[i].imshow(np.log10(arrs[i][:,chidcs]+lo),cmap=cmap,norm=norm,)\nax=subfigs[1].add_subplot()\nplt.colorbar(mpl.cm.ScalarMappable(norm=norm,cmap=cmap),orientation='horizontal',cax=ax)\nplt.show()\n    \nprint(\"↑↑ 対数メタン体積混合率の層分布\")\nprint(\"   横軸：層番号 (最上層が0), 縦軸：データ番号\")\nprint(\"   色：対数メタン体積混合率\")\n\nim=np.ndarray((100,60))\nfor i in range(60):\n    im[:,i]=np.histogram(np.log10(arr[:,chidcs][:,i]+lo),range=rng,bins=100)[0]\nim=im/(im.sum(axis=0)+0.000001)\n_=plt.imshow(im,cmap=cmap)\n_=plt.yticks(np.linspace(0,100,5),\n             [\"{:.4f}\".format(i) for i in np.linspace(rng[0],rng[1],5)]\n            )\n_=plt.colorbar()\nplt.show()\n    \nprint(\"↑↑ 層ごとの対数メタン体積混合率\")\nprint(\"   横軸：対数メタン体積混合率, 縦軸：層番号 (最上層が0)\")\nprint(\"   色：対数分布率\")","metadata":{"execution":{"iopub.status.busy":"2024-05-01T03:46:40.397243Z","iopub.execute_input":"2024-05-01T03:46:40.397616Z","iopub.status.idle":"2024-05-01T03:46:48.460788Z","shell.execute_reply.started":"2024-05-01T03:46:40.397585Z","shell.execute_reply":"2024-05-01T03:46:48.459421Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 9. Nitrous oxide Distribution","metadata":{}},{"cell_type":"code","source":"lo=0\nrng=(np.log10(arr[:,noidcs].min()+lo),np.log10(arr[:,noidcs].max()+lo))\n\nfor i in range(len(arr)):\n    plt.plot(arr[i,noidcs],alpha=0.01,color=\"#7F7FFF\")\nplt.show()\n\ncmap=mpl.cm.plasma\nnorm=mpl.colors.Normalize(vmin=rng[0],vmax=rng[1])\nfig=plt.figure()\nsubfigs=fig.subfigures(2,1,height_ratios=(10,1))\n\naxes=subfigs[0].subplots(1,10,sharey=True)\nfor i in range(0,10):\n    im=axes[i].imshow(np.log10(arrs[i][:,noidcs]+lo),cmap=cmap,norm=norm,)\nax=subfigs[1].add_subplot()\nplt.colorbar(mpl.cm.ScalarMappable(norm=norm,cmap=cmap),orientation='horizontal',cax=ax)\nplt.show()\n    \nprint(\"↑↑ 対数窒素酸化物体積混合率の層分布\")\nprint(\"   横軸：層番号 (最上層が0), 縦軸：データ番号\")\nprint(\"   色：対数窒素酸化物体積混合率\")\n\nim=np.ndarray((100,60))\nfor i in range(60):\n    im[:,i]=np.histogram(np.log10(arr[:,noidcs][:,i]+lo),range=rng,bins=100)[0]\nim=im/(im.sum(axis=0)+0.000001)\n_=plt.imshow(im,cmap=cmap)\n_=plt.yticks(np.linspace(0,100,5),\n             [\"{:.4f}\".format(i) for i in np.linspace(rng[0],rng[1],5)]\n            )\n_=plt.colorbar()\nplt.show()\n    \nprint(\"↑↑ 層ごとの対数窒素酸化物体積混合率\")\nprint(\"   横軸：対数窒素酸化物体積混合率, 縦軸：層番号 (最上層が0)\")\nprint(\"   色：対数分布率\")","metadata":{"execution":{"iopub.status.busy":"2024-05-01T03:46:48.462936Z","iopub.execute_input":"2024-05-01T03:46:48.464455Z","iopub.status.idle":"2024-05-01T03:46:56.425612Z","shell.execute_reply.started":"2024-05-01T03:46:48.464388Z","shell.execute_reply":"2024-05-01T03:46:56.424389Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 10. Heating tendency Distribution","metadata":{}},{"cell_type":"code","source":"rng=(arr[:,htidcs].min(),arr[:,htidcs].max())\n\nfor i in range(len(arr)):\n    plt.plot(arr[i,htidcs],alpha=0.01,color=\"#7F7FFF\")\nplt.show()\n\ncmap=mpl.cm.plasma\nnorm=mpl.colors.Normalize(vmin=rng[0],vmax=rng[1])\nfig=plt.figure()\nsubfigs=fig.subfigures(2,1,height_ratios=(10,1))\n    \n\naxes=subfigs[0].subplots(1,10,sharey=True)\nfor i in range(0,10):\n    im=axes[i].imshow(arrs[i][:,htidcs],cmap=cmap,norm=norm,)\nax=subfigs[1].add_subplot()\nplt.colorbar(mpl.cm.ScalarMappable(norm=norm,cmap=cmap),orientation='horizontal',cax=ax)\nplt.show()\n    \nprint(\"↑↑ 温度変化率の層分布\")\nprint(\"   横軸：層番号 (最上層が0), 縦軸：データ番号\")\nprint(\"   色：温度変化率\")\n\nim=np.ndarray((100,60))\nfor i in range(60):\n    im[:,i]=np.histogram(arr[:,htidcs][:,i],range=rng,bins=100)[0]/len(arr)\nim=im/im.sum(axis=0)\n_=plt.imshow(np.log(im+0.0001),cmap=cmap)\n_=plt.yticks(np.linspace(0,100,5),np.linspace(rng[0],rng[1],5).astype(\"int\"))\n_=plt.colorbar()\nplt.show()\n    \nprint(\"↑↑ 層ごとの温度変化率分布\")\nprint(\"   横軸：温度変化率, 縦軸：層番号 (最上層が0)\")\nprint(\"   色：分布率\")","metadata":{"execution":{"iopub.status.busy":"2024-05-01T03:46:56.427395Z","iopub.execute_input":"2024-05-01T03:46:56.427753Z","iopub.status.idle":"2024-05-01T03:47:05.180403Z","shell.execute_reply.started":"2024-05-01T03:46:56.427722Z","shell.execute_reply":"2024-05-01T03:47:05.178513Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 11. Moistening tendency Distribtuion","metadata":{}},{"cell_type":"code","source":"rng=(arr[:,mtidcs].min(),arr[:,mtidcs].max())\n\nfor i in range(len(arr)):\n    plt.plot(arr[i,mtidcs],alpha=0.01,color=\"#7F7FFF\")\nplt.show()\n\ncmap=mpl.cm.plasma\nnorm=mpl.colors.Normalize(vmin=rng[0],vmax=rng[1])\nfig=plt.figure()\nsubfigs=fig.subfigures(2,1,height_ratios=(10,1))\n\naxes=subfigs[0].subplots(1,10,sharey=True)\nfor i in range(0,10):\n    im=axes[i].imshow(arrs[i][:,mtidcs],cmap=cmap,norm=norm,)\nax=subfigs[1].add_subplot()\nplt.colorbar(mpl.cm.ScalarMappable(norm=norm,cmap=cmap),orientation='horizontal',cax=ax)\nplt.show()\n    \nprint(\"↑↑ 湿度変化率の層分布\")\nprint(\"   横軸：層番号 (最上層が0), 縦軸：データ番号\")\nprint(\"   色：湿度変化率\")\n\nim=np.ndarray((100,60))\nfor i in range(60):\n    im[:,i]=np.histogram(arr[:,mtidcs][:,i],range=(rng[0]+10**-15,rng[1]),bins=100)[0]\nim=im/(im.sum(axis=0)+0.00001)\n_=plt.imshow(np.log(im+0.0001),cmap=cmap)\n_=plt.yticks(np.linspace(0,100,5),[\"{:.4f}\".format(i) for i in np.linspace(rng[0]+0.0001,rng[1],5)])\n_=plt.colorbar()\nplt.show()\n    \nprint(\"↑↑ 層ごとの湿度変化率分布\")\nprint(\"   横軸：湿度変化率, 縦軸：層番号 (最上層が0)\")\nprint(\"   色：分布率\")","metadata":{"execution":{"iopub.status.busy":"2024-05-01T03:47:05.182471Z","iopub.execute_input":"2024-05-01T03:47:05.182929Z","iopub.status.idle":"2024-05-01T03:47:13.577483Z","shell.execute_reply.started":"2024-05-01T03:47:05.182888Z","shell.execute_reply":"2024-05-01T03:47:13.575519Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 12. Liquid mixing ratio change Distribution","metadata":{}},{"cell_type":"code","source":"rng=(arr[:,ltidcs].min(),arr[:,ltidcs].max())\n\nfor i in range(len(arr)):\n    plt.plot(arr[i,ltidcs],alpha=0.01,color=\"#7F7FFF\")\nplt.show()\n\ncmap=mpl.cm.plasma\nnorm=mpl.colors.Normalize(vmin=rng[0],vmax=rng[1])\nfig=plt.figure()\nsubfigs=fig.subfigures(2,1,height_ratios=(10,1))\n\naxes=subfigs[0].subplots(1,10,sharey=True)\nfor i in range(0,10):\n    im=axes[i].imshow(arrs[i][:,ltidcs],cmap=cmap,norm=norm,)\nax=subfigs[1].add_subplot()\nplt.colorbar(mpl.cm.ScalarMappable(norm=norm,cmap=cmap),orientation='horizontal',cax=ax)\nplt.show()\n    \nprint(\"↑↑ 雲水混合比の変化率の層分布\")\nprint(\"   横軸：層番号 (最上層が0), 縦軸：データ番号\")\nprint(\"   色：雲水混合比の変化率\")\n\nim=np.ndarray((100,60))\nfor i in range(60):\n    im[:,i]=np.histogram(arr[:,ltidcs][:,i],range=(rng[0],rng[1]),bins=100)[0]\nim=im/(im.sum(axis=0)+0.00001)\n_=plt.imshow(np.log(im+0.0001),cmap=cmap)\n_=plt.yticks(np.linspace(0,100,5),[\"{:.4f}\".format(i) for i in np.linspace(rng[0],rng[1],5)])\n_=plt.colorbar()\nplt.show()\n    \nprint(\"↑↑ 層ごとの雲水混合比の変化率分布\")\nprint(\"   横軸：雲水混合比の変化率, 縦軸：層番号 (最上層が0)\")\nprint(\"   色：分布率\")","metadata":{"execution":{"iopub.status.busy":"2024-05-01T03:47:13.579552Z","iopub.execute_input":"2024-05-01T03:47:13.579986Z","iopub.status.idle":"2024-05-01T03:47:21.943091Z","shell.execute_reply.started":"2024-05-01T03:47:13.579949Z","shell.execute_reply":"2024-05-01T03:47:21.941524Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 13. Ice mixing ratio change Distribution","metadata":{}},{"cell_type":"code","source":"rng=(arr[:,itidcs].min(),arr[:,itidcs].max())\n\nfor i in range(len(arr)):\n    plt.plot(arr[i,itidcs],alpha=0.01,color=\"#7F7FFF\")\nplt.show()\n\ncmap=mpl.cm.plasma\nnorm=mpl.colors.Normalize(vmin=rng[0],vmax=rng[1])\nfig=plt.figure()\nsubfigs=fig.subfigures(2,1,height_ratios=(10,1))\n\naxes=subfigs[0].subplots(1,10,sharey=True)\nfor i in range(0,10):\n    im=axes[i].imshow(arrs[i][:,itidcs],cmap=cmap,norm=norm,)\nax=subfigs[1].add_subplot()\nplt.colorbar(mpl.cm.ScalarMappable(norm=norm,cmap=cmap),orientation='horizontal',cax=ax)\nplt.show()\n    \nprint(\"↑↑ 雲氷混合比の変化率の層分布\")\nprint(\"   横軸：層番号 (最上層が0), 縦軸：データ番号\")\nprint(\"   色：雲氷混合比の変化率\")\n\nim=np.ndarray((100,60))\nfor i in range(60):\n    im[:,i]=np.histogram(arr[:,itidcs][:,i],range=(rng[0],rng[1]),bins=100)[0]\nim=im/(im.sum(axis=0)+0.00001)\n_=plt.imshow(np.log(im+0.0001),cmap=cmap)\n_=plt.yticks(np.linspace(0,100,5),[\"{:.4f}\".format(i) for i in np.linspace(rng[0],rng[1],5)])\n_=plt.colorbar()\nplt.show()\n    \nprint(\"↑↑ 層ごとの雲氷混合比の変化率分布\")\nprint(\"   横軸：雲氷混合比の変化率, 縦軸：層番号 (最上層が0)\")\nprint(\"   色：分布率\")","metadata":{"execution":{"iopub.status.busy":"2024-05-01T03:47:21.944565Z","iopub.execute_input":"2024-05-01T03:47:21.944927Z","iopub.status.idle":"2024-05-01T03:47:29.981778Z","shell.execute_reply.started":"2024-05-01T03:47:21.944895Z","shell.execute_reply":"2024-05-01T03:47:29.979771Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 14. Zonal wind acceleration Distribution","metadata":{}},{"cell_type":"code","source":"rng=(arr[:,zaidcs].min(),arr[:,zaidcs].max())\n\nfor i in range(len(arr)):\n    plt.plot(arr[i,zaidcs],alpha=0.01,color=\"#7F7FFF\")\nplt.show()\n\ncmap=mpl.cm.plasma\nnorm=mpl.colors.Normalize(vmin=rng[0],vmax=rng[1])\nfig=plt.figure()\nsubfigs=fig.subfigures(2,1,height_ratios=(10,1))\n    \n\naxes=subfigs[0].subplots(1,10,sharey=True)\nfor i in range(0,10):\n    im=axes[i].imshow(arrs[i][:,zaidcs],cmap=cmap,norm=norm,)\nax=subfigs[1].add_subplot()\nplt.colorbar(mpl.cm.ScalarMappable(norm=norm,cmap=cmap),orientation='horizontal',cax=ax)\nplt.show()\n    \nprint(\"↑↑ 東西風速度の変化率の層分布\")\nprint(\"   横軸：層番号 (最上層が0), 縦軸：データ番号\")\nprint(\"   色：東西風速度の変化率\")\n\nim=np.ndarray((100,60))\nfor i in range(60):\n    im[:,i]=np.histogram(arr[:,zaidcs][:,i],range=rng,bins=100)[0]/len(arr)\nim=im/im.sum(axis=0)\n_=plt.imshow(np.log(im+0.0001),cmap=cmap)\n_=plt.yticks(np.linspace(0,100,5),[\"{:.4f}\".format(i) for i in np.linspace(rng[0],rng[1],5)])\n_=plt.colorbar()\nplt.show()\n    \nprint(\"↑↑ 層ごとの東西風速度の変化率分布\")\nprint(\"   横軸：東西風速度の変化率, 縦軸：層番号 (最上層が0)\")\nprint(\"   色：分布率\")","metadata":{"execution":{"iopub.status.busy":"2024-05-01T03:47:29.984011Z","iopub.execute_input":"2024-05-01T03:47:29.984524Z","iopub.status.idle":"2024-05-01T03:47:38.544511Z","shell.execute_reply.started":"2024-05-01T03:47:29.984489Z","shell.execute_reply":"2024-05-01T03:47:38.542894Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 15. Meridional wind acceleration Distribution","metadata":{}},{"cell_type":"code","source":"rng=(arr[:,maidcs].min(),arr[:,maidcs].max())\n\nfor i in range(len(arr)):\n    plt.plot(arr[i,maidcs],alpha=0.01,color=\"#7F7FFF\")\nplt.show()\n\ncmap=mpl.cm.plasma\nnorm=mpl.colors.Normalize(vmin=rng[0],vmax=rng[1])\nfig=plt.figure()\nsubfigs=fig.subfigures(2,1,height_ratios=(10,1))\n    \n\naxes=subfigs[0].subplots(1,10,sharey=True)\nfor i in range(0,10):\n    im=axes[i].imshow(arrs[i][:,maidcs],cmap=cmap,norm=norm,)\nax=subfigs[1].add_subplot()\nplt.colorbar(mpl.cm.ScalarMappable(norm=norm,cmap=cmap),orientation='horizontal',cax=ax)\nplt.show()\n    \nprint(\"↑↑ 南北風速度の変化率の層分布\")\nprint(\"   横軸：層番号 (最上層が0), 縦軸：データ番号\")\nprint(\"   色：南北風速度の変化率\")\n\nim=np.ndarray((100,60))\nfor i in range(60):\n    im[:,i]=np.histogram(arr[:,maidcs][:,i],range=rng,bins=100)[0]/len(arr)\nim=im/im.sum(axis=0)\n_=plt.imshow(np.log(im+0.0001),cmap=cmap)\n_=plt.yticks(np.linspace(0,100,5),[\"{:.4f}\".format(i) for i in np.linspace(rng[0],rng[1],5)])\n_=plt.colorbar()\nplt.show()\n    \nprint(\"↑↑ 層ごとの南北風速度の変化率分布\")\nprint(\"   横軸：南北風速度の変化率, 縦軸：層番号 (最上層が0)\")\nprint(\"   色：分布率\")","metadata":{"execution":{"iopub.status.busy":"2024-05-01T03:47:38.547798Z","iopub.execute_input":"2024-05-01T03:47:38.548269Z","iopub.status.idle":"2024-05-01T03:47:46.657389Z","shell.execute_reply.started":"2024-05-01T03:47:38.548235Z","shell.execute_reply":"2024-05-01T03:47:46.656047Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 3) SCALAR VALUES","metadata":{}},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"arr=np.array([file.readline().split(\",\") for _ in range(50000)])[:,1:].astype(\"float\")","metadata":{"execution":{"iopub.status.busy":"2024-05-01T03:47:46.658961Z","iopub.execute_input":"2024-05-01T03:47:46.659507Z","iopub.status.idle":"2024-05-01T03:49:16.303601Z","shell.execute_reply.started":"2024-05-01T03:47:46.659475Z","shell.execute_reply":"2024-05-01T03:49:16.302695Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 1. Land/Ocean/Ice Fractions","metadata":{}},{"cell_type":"code","source":"ax=plt.subplot(projection=\"ternary\")\nax.scatter(arr[:,lafidx],arr[:,oafidx],1-arr[:,lafidx]-arr[:,oafidx],marker=\"x\",s=30)\nax.set_tlabel(\"land\")\nax.set_llabel(\"ocean\")\nax.set_rlabel(\"ice\")\nplt.show()\nplt.hist(arr[:,lafidx],range=(0,1),bins=20)\nplt.xlabel(\"land fraction\")\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2024-05-01T03:49:16.304797Z","iopub.execute_input":"2024-05-01T03:49:16.305182Z","iopub.status.idle":"2024-05-01T03:49:21.661821Z","shell.execute_reply.started":"2024-05-01T03:49:16.30515Z","shell.execute_reply":"2024-05-01T03:49:21.660557Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 2. Latent/Sensible heat fluxes & Solar insolation","metadata":{}},{"cell_type":"code","source":"plt.scatter(arr[:,lhfidx],arr[:,shfidx],marker=\"x\",s=0.1,c=arr[:,szaidx],cmap=mpl.cm.plasma)\nplt.xlabel(\"latent heat flux\")\nplt.ylabel(\"sensible heat flux\")\nplt.colorbar().set_label(\"solar zenith angle\")\nplt.show()\nplt.scatter(arr[:,soiidx],arr[:,szaidx],s=0.1,c=arr[:,szaidx],cmap=mpl.cm.plasma)\nplt.xlabel(\"solar insolation\")\nplt.ylabel(\"solar zenith angle\")\nplt.colorbar().set_label(\"solar zenith angle\")\nplt.show()\nplt.scatter(arr[:,shfidx],arr[:,lhfidx],marker=\"x\",s=0.01,c=arr[:,htidcs][:,-1],cmap=mpl.cm.plasma,norm=mpl.colors.Normalize(vmin=-0.0003,vmax=0.0001))\nplt.xlabel(\"sensible heat flux\")\nplt.ylabel(\"latent heat flux\")\nplt.colorbar().set_label(\"heating tendency\")\nplt.show()\nplt.scatter(arr[:,hidcs][:,-1],arr[:,lhfidx],marker=\"x\",s=0.1,c=arr[:,htidcs][:,-1],cmap=mpl.cm.plasma)\nplt.xlabel(\"humidity\")\nplt.ylabel(\"latent heat flux\")\nplt.colorbar().set_label(\"solar zenith angle\")\nplt.show()\nplt.scatter(arr[:,oafidx],arr[:,lhfidx],marker=\"x\",s=0.1,c=arr[:,szaidx],cmap=mpl.cm.plasma)\nplt.xlabel(\"ocean areal fraction\")\nplt.ylabel(\"latent heat flux\")\nplt.colorbar().set_label(\"solar zenith angle\")\nplt.show()\nplt.scatter(arr[:,soiidx],arr[:,shfidx],marker=\"x\",s=0.1,c=arr[:,drlidx],cmap=mpl.cm.plasma)\nplt.xlabel(\"solar insolation\")\nplt.ylabel(\"sensible heat flux\")\nplt.colorbar().set_label(\"solar zenith angle\")\nplt.show()\nplt.scatter(arr[:,ulfidx],arr[:,shfidx],marker=\"x\",s=0.1,c=arr[:,szaidx],cmap=mpl.cm.plasma)\nplt.xlabel(\"upward longwave flux\")\nplt.ylabel(\"sensible heat flux\")\nplt.colorbar().set_label(\"solar zenith angle\")\nplt.show()\nplt.scatter(arr[:,drlidx],arr[:,shfidx],marker=\"x\",s=0.1,c=arr[:,szaidx],cmap=mpl.cm.plasma)\nplt.xlabel(\"albedo for direct longwave radiation\")\nplt.ylabel(\"sensible heat flux\")\nplt.colorbar().set_label(\"solar zenith angle\")\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2024-05-01T03:49:21.663799Z","iopub.execute_input":"2024-05-01T03:49:21.664241Z","iopub.status.idle":"2024-05-01T03:49:27.155969Z","shell.execute_reply.started":"2024-05-01T03:49:21.664194Z","shell.execute_reply":"2024-05-01T03:49:27.154492Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 3. Albedo","metadata":{}},{"cell_type":"code","source":"plt.scatter(arr[:,dflidx],arr[:,drlidx],s=0.2,c=arr[:,szaidx],cmap=mpl.cm.plasma)\nplt.xlabel(\"albedo for diffuse longwave radiation\")\nplt.ylabel(\"albedo for directed longwave radiation\")\nplt.colorbar().set_label(\"solar zenith angle\")\nplt.show()\nplt.scatter(arr[:,dfsidx],arr[:,drsidx],s=0.2,c=arr[:,szaidx],cmap=mpl.cm.plasma)\nplt.xlabel(\"albedo for diffuse shortwave radiation\")\nplt.ylabel(\"albedo for directed shortwave radiation\")\nplt.colorbar().set_label(\"solar zenith angle\")\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2024-05-01T03:49:27.157926Z","iopub.execute_input":"2024-05-01T03:49:27.158432Z","iopub.status.idle":"2024-05-01T03:49:29.208143Z","shell.execute_reply.started":"2024-05-01T03:49:27.158396Z","shell.execute_reply":"2024-05-01T03:49:29.206585Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 4. Zonal/Meridional wind speed","metadata":{}},{"cell_type":"code","source":"norm=mpl.colors.Normalize(vmin=0,vmax=1)\nfig=plt.figure()\nax=plt.axes()\nplt.colorbar(mpl.cm.ScalarMappable(norm=norm,cmap=cmap),ax=ax).set_label(\"solar zenith angle\")\ndef plot(i):\n    ax.cla()\n    ax.scatter(arr[:,zfidcs][:,i],arr[:,mfidcs][:,i],marker=\"x\",s=0.04,c=arr[:,szaidx],cmap=mpl.cm.plasma)\n    ax.set_xlim([-100,100])\n    ax.set_ylim([-100,100])\n    ax.set_title(f\"level={i}\")\n\nanim=anime.FuncAnimation(fig,plot,frames=60)\nplt.close(fig)\nHTML(anim.to_jshtml(fps=5))","metadata":{"execution":{"iopub.status.busy":"2024-05-01T04:20:05.039602Z","iopub.execute_input":"2024-05-01T04:20:05.040129Z","iopub.status.idle":"2024-05-01T04:20:45.9709Z","shell.execute_reply.started":"2024-05-01T04:20:05.040085Z","shell.execute_reply":"2024-05-01T04:20:45.968416Z"},"trusted":true},"execution_count":null,"outputs":[]}]}