{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Liquid-only thermometry\n", "- This script shows how to use the various options for liquid-only thermometry\n", "- This tutorial is also a great starting point when using other thermobarometers, as the choice of inputs is the same as for other phases\n", "- You can download the Excel spreadsheet you need here: https://github.com/PennyWieser/Thermobar/blob/main/docs/Examples/Liquid_Ol_Liq_Themometry/Liquid_only_Thermometry.xlsx" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### You need to install Thermobar once on your machine, if you haven't done this yet, uncomment the line below (remove the #)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "#!pip install Thermobar" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import Thermobar as pt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load in data\n", "- The function \"import_excel\" allows you to specify the name of the excel file and the sheet name.\n", "- Data should have the headings SiO2_Liq, TiO2_Liq etc. etc. The order of headings doesn't matter.\n", "- As in the 5 min intro example, you could also have no _Liq in the headings, and load them in the functoin using suffix=\"_Liq\"\n", "- You can also have any other columns, e.g., estimate of pressure from any other proxy (melt inclusions, geophysics), and anything else you might want to plot (e.g., latitude, longitude)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "out=pt.import_excel('Liquid_only_Thermometry.xlsx', sheet_name=\"Liquid_only\")\n", "my_input=out['my_input']\n", "myLiquids1=out['Liqs']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Inspect inputs to check you didn't have any funny column headings.\n", "- It is always useful to inspect the outputs from import_excel, sometimes your column headings may have funny characters due to use of spaces, subscripts etc. in journal pdf tables. Check that all the columns you entered have numbers. If, say your SiO2_Liq heading had funny characters, this column will be filled with zeros when you inspect it." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SiO2_LiqTiO2_LiqAl2O3_LiqFeOt_LiqMnO_LiqMgO_LiqCaO_LiqNa2O_LiqK2O_LiqCr2O3_LiqP2O5_LiqH2O_LiqFe3Fet_LiqNiO_LiqCoO_LiqCO2_LiqSample_ID_Liq
057.0236020.62310616.3328994.361740.1038514.191806.948583.597020.8968950.0000000.2265845.590.20.00.00.00
157.6586000.65415017.1947993.906210.0841052.868925.915383.859481.0186000.0000000.2149356.550.20.00.00.01
260.7312010.86205417.1441994.077810.0774882.508675.220754.455561.4141600.0000000.3196383.140.20.00.00.02
361.5327990.44086016.5088013.329900.0375201.641504.342944.408601.4070000.0000000.2157406.200.20.00.00.03
452.9691010.80341217.5630005.932170.1494723.783517.651103.802190.5511780.0373680.1961826.580.20.00.00.04
\n", "
" ], "text/plain": [ " SiO2_Liq TiO2_Liq Al2O3_Liq FeOt_Liq MnO_Liq MgO_Liq CaO_Liq \\\n", "0 57.023602 0.623106 16.332899 4.36174 0.103851 4.19180 6.94858 \n", "1 57.658600 0.654150 17.194799 3.90621 0.084105 2.86892 5.91538 \n", "2 60.731201 0.862054 17.144199 4.07781 0.077488 2.50867 5.22075 \n", "3 61.532799 0.440860 16.508801 3.32990 0.037520 1.64150 4.34294 \n", "4 52.969101 0.803412 17.563000 5.93217 0.149472 3.78351 7.65110 \n", "\n", " Na2O_Liq K2O_Liq Cr2O3_Liq P2O5_Liq H2O_Liq Fe3Fet_Liq NiO_Liq \\\n", "0 3.59702 0.896895 0.000000 0.226584 5.59 0.2 0.0 \n", "1 3.85948 1.018600 0.000000 0.214935 6.55 0.2 0.0 \n", "2 4.45556 1.414160 0.000000 0.319638 3.14 0.2 0.0 \n", "3 4.40860 1.407000 0.000000 0.215740 6.20 0.2 0.0 \n", "4 3.80219 0.551178 0.037368 0.196182 6.58 0.2 0.0 \n", "\n", " CoO_Liq CO2_Liq Sample_ID_Liq \n", "0 0.0 0.0 0 \n", "1 0.0 0.0 1 \n", "2 0.0 0.0 2 \n", "3 0.0 0.0 3 \n", "4 0.0 0.0 4 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "myLiquids1.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## If at any point you need help with what functions inputs to use, you can type help(pt.function_name)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on function calculate_liq_only_temp in module Thermobar.liquid_thermometers:\n", "\n", "calculate_liq_only_temp(*, liq_comps, equationT, P=None, H2O_Liq=None, print=False)\n", " Liquid-only thermometery. Returns a temperature in Kelvin.\n", " \n", " Parameters\n", " -------\n", " \n", " liq_comps: pandas.DataFrame\n", " liquid compositions with column headings SiO2_Liq, MgO_Liq etc.\n", " \n", " equationT: str\n", " If has _sat at the end, represents the saturation surface of that mineral.\n", " \n", " Equations from Putirka et al. (2016).\n", " | T_Put2016_eq3_amp_sat (saturation surface of amphibole)\n", " \n", " Equations from Putirka (2008) and older studies:\n", " \n", " | T_Put2008_eq13\n", " | T_Put2008_eq14\n", " | T_Put2008_eq15\n", " | T_Put2008_eq16\n", " | T_Put2008_eq34_cpx_sat\n", " | T_Put2008_eq28b_opx_sat\n", " | T_Put1999_cpx_sat\n", " * Following 3 thermometers are adaptations of olivine-liquid thermometers with DMg calculated using Beattie 1993,\n", " This means you can use them without knowing an olivine composition. ocan be applied when you haven't measured an olivine composiiton.\n", " | T_Put2008_eq19_BeattDMg\n", " | T_Put2008_eq21_BeattDMg\n", " | T_Put2008_eq22_BeattDMg\n", " \n", " Equations from Sugawara (2000):\n", " \n", " | T_Sug2000_eq1\n", " | T_Sug2000_eq3_ol\n", " | T_Sug2000_eq3_opx\n", " | T_Sug2000_eq3_cpx\n", " | T_Sug2000_eq3_pig\n", " | T_Sug2000_eq6a\n", " | T_Sug2000_eq6b\n", " \n", " Equations from Helz and Thornber (1987):\n", " \n", " | T_Helz1987_MgO\n", " | T_Helz1987_CaO\n", " \n", " Equation from Molina et al. (2015)\n", " \n", " | T_Molina2015_amp_sat\n", " \n", " Equation from Montrieth 1995\n", " | T_Montierth1995_MgO\n", " \n", " Equation from Beattie (1993)\n", " | T_Beatt1993_opx\n", " \n", " P: float, int, pandas.Series, str (\"Solve\")\n", " Pressure in kbar\n", " Only needed for P-sensitive thermometers.\n", " If enter P=\"Solve\", returns a partial function\n", " Else, enter an integer, float, or panda series\n", " \n", " H2O_Liq: optional.\n", " If None, uses H2O_Liq column from input.\n", " If int, float, pandas.Series, uses this instead of H2O_Liq Column\n", " \n", " \n", " Returns\n", " -------\n", " pandas series\n", " Temperature in K\n", "\n" ] } ], "source": [ "# Options for different thermometers laid out in the \"equationT\" =\n", "help(pt.calculate_liq_only_temp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 1 - P and H2O-independent thermometers\n", "- The thermometer of Helz and Thornber 1987 is not dependent on pressure or H2O.\n", "- Thus, the function only requires 2 inputs, the name of pandas dataframe with liquid compositions (here, myLiquids1) and the name of the equationT you have choosen\n", "- All functions output in Kelvin and Kbar, so to get celcius, we subtract 273.15" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1098.255182\n", "1 1071.665294\n", "2 1064.424269\n", "3 1046.994150\n", "4 1090.048550\n", "5 1079.746499\n", "6 1067.772325\n", "7 1099.844089\n", "8 1077.533086\n", "9 1121.514497\n", "Name: MgO_Liq, dtype: float64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "T_Helz1987=pt.calculate_liq_only_temp(liq_comps=myLiquids1, equationT=\"T_Helz1987_MgO\")-273.15\n", "# In jupyter lab/notebooks, outputs don't automatically display, \n", "# but it prints the last line in each cell\n", "T_Helz1987" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 2 - Pressure-dependent thermometer \n", "a) If you select an equation which is Pressure-dependent, and don't specify a pressure, the code returns an error\n", "\n", "b) You can either select P=\"Solve\" which returns a partial function. This means you can evaluate it at any pressure you want easily\n", "\n", "c) Or you can specify a fixed pressure, e.g., P=5 (which runs all calculations at 5 kbar)\n", "\n", "d) Or you can specify pressure based on a column in your original spreadsheet containing pressure" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 2a - Don't specify a pressure\n", "- returns an error, telling you to input a pressure" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "T_Put2008_eq15 requires you to enter P, or specify P=\"Solve\"", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", "Input \u001b[1;32mIn [7]\u001b[0m, in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[0m Teq15_2kbar_6wt\u001b[38;5;241m=\u001b[39m\u001b[43mpt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcalculate_liq_only_temp\u001b[49m\u001b[43m(\u001b[49m\u001b[43mliq_comps\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmyLiquids1\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[0;32m 2\u001b[0m \u001b[43m \u001b[49m\u001b[43mequationT\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mT_Put2008_eq15\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m273.15\u001b[39m \u001b[38;5;66;03m# Convert to Celcius\u001b[39;00m\n\u001b[0;32m 3\u001b[0m Teq15_2kbar_6wt\n", "File \u001b[1;32mg:\\my drive\\postdoc\\pymme\\mybarometers\\thermobar_outer\\src\\Thermobar\\liquid_thermometers.py:526\u001b[0m, in \u001b[0;36mcalculate_liq_only_temp\u001b[1;34m(liq_comps, equationT, P, H2O_Liq, print)\u001b[0m\n\u001b[0;32m 524\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m sig\u001b[38;5;241m.\u001b[39mparameters[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mP\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;241m.\u001b[39mdefault \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 525\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m P \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 526\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mequationT\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m requires you to enter P, or specify P=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSolve\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 528\u001b[0m \u001b[38;5;66;03m#else:\u001b[39;00m\n\u001b[0;32m 529\u001b[0m \u001b[38;5;66;03m# print('gothere2')\u001b[39;00m\n\u001b[0;32m 530\u001b[0m \u001b[38;5;66;03m# if P is not None:\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 533\u001b[0m \u001b[38;5;66;03m# P=None\u001b[39;00m\n\u001b[0;32m 534\u001b[0m \u001b[38;5;66;03m# print('got here')\u001b[39;00m\n\u001b[0;32m 538\u001b[0m kwargs \u001b[38;5;241m=\u001b[39m {name: anhyd_cat_frac[name] \u001b[38;5;28;01mfor\u001b[39;00m name, p \u001b[38;5;129;01min\u001b[39;00m sig\u001b[38;5;241m.\u001b[39mparameters\u001b[38;5;241m.\u001b[39mitems() \u001b[38;5;28;01mif\u001b[39;00m p\u001b[38;5;241m.\u001b[39mkind \u001b[38;5;241m==\u001b[39m inspect\u001b[38;5;241m.\u001b[39mParameter\u001b[38;5;241m.\u001b[39mKEYWORD_ONLY}\n", "\u001b[1;31mValueError\u001b[0m: T_Put2008_eq15 requires you to enter P, or specify P=\"Solve\"" ] } ], "source": [ "Teq15_2kbar_6wt=pt.calculate_liq_only_temp(liq_comps=myLiquids1, \n", " equationT=\"T_Put2008_eq15\")-273.15 # Convert to Celcius\n", "Teq15_2kbar_6wt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 2b - specify P=\"Solve\" to return a partial function" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "Teq15_partial=pt.calculate_liq_only_temp(liq_comps=myLiquids1, \n", " equationT=\"T_Put2008_eq15\", P=\"Solve\")# Output is in Kelvin" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1082.230315\n", "1 1031.095340\n", "2 1065.719538\n", "3 991.644728\n", "4 1049.453769\n", "5 1033.581813\n", "6 1021.013571\n", "7 946.501846\n", "8 919.539200\n", "9 1108.248454\n", "dtype: float64" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# You can then evaluate this partial at any pressure you want (here, 10 kbar).\n", "# This can save computation time\n", "Teq15_10kbar=Teq15_partial(10)-273.15\n", "Teq15_10kbar" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 2c - evaluate at constant pressure" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1062.650315\n", "1 1011.515340\n", "2 1046.139538\n", "3 972.064728\n", "4 1029.873769\n", "5 1014.001813\n", "6 1001.433571\n", "7 926.921846\n", "8 899.959200\n", "9 1088.668454\n", "dtype: float64" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Here P=5 kbar\n", "Teq15_5kbar=pt.calculate_liq_only_temp(liq_comps=myLiquids1, \n", " equationT=\"T_Put2008_eq15\", P=5)-273.15 # Output is in Kelvin, convert to C\n", "Teq15_5kbar " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 2d - Evaluate at values given by P_kbar column in inputted excel spreadsheet\n", "- your column can be called anything, you just need state P=my_input['column name']. If you stored pressure in GPa say, you could do P=10*my_input['P_GPa']" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1050.902315\n", "1 1003.683340\n", "2 1046.139538\n", "3 972.064728\n", "4 1029.873769\n", "5 1014.001813\n", "6 1001.433571\n", "7 926.921846\n", "8 899.959200\n", "9 1088.668454\n", "dtype: float64" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Teq15_input=pt.calculate_liq_only_temp(liq_comps=myLiquids1, \n", " equationT=\"T_Put2008_eq15\", P=my_input['P_kbar'])-273.15 \n", "# Output is in Kelvin, convert to c.\n", "Teq15_input" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example 3 - Specifying water content\n", "- The dataframe for liquids in this example has a H2O column it read from the excel spreadsheet. By default, H2O-dependent thermometers will use the values entered in this column\n", "- If you don't have this column, it'll be filled with zeros, so calculations will be done at H2O=0\n", "- However, you can also override this by specifying H2O_Liq=value in the function." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1108.710017\n", "1 1069.891842\n", "2 1060.765739\n", "3 1025.950726\n", "4 1088.635168\n", "5 1075.714113\n", "6 1058.655371\n", "7 1083.961043\n", "8 1058.281402\n", "9 1129.211252\n", "dtype: float64" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Teq15_2H2O=pt.calculate_liq_only_temp(liq_comps=myLiquids1, \n", " equationT=\"T_Put2008_eq15\", P=5, H2O_Liq=2)-273.15 # Output is in Kelvin\n", "Teq15_2H2O" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### We can also investigate how sensitive our calculations are to water, say we think maybe water ranges from 2-4 wt%, we can do the same calculation at 4 wt%" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1083.050017\n", "1 1044.231842\n", "2 1035.105739\n", "3 1000.290726\n", "4 1062.975168\n", "5 1050.054113\n", "6 1032.995371\n", "7 1058.301043\n", "8 1032.621402\n", "9 1103.551252\n", "dtype: float64" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Teq15_4H2O=pt.calculate_liq_only_temp(liq_comps=myLiquids1, \n", " equationT=\"T_Put2008_eq15\", P=5, H2O_Liq=4)-273.15 # Output is in Kelvin\n", "Teq15_4H2O" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### We can now calculate the difference between these by subtracting one from the other. Here, as H2O_Liq is just a constant on the function, the difference is constant for all liquids" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 -25.66\n", "1 -25.66\n", "2 -25.66\n", "3 -25.66\n", "4 -25.66\n", "5 -25.66\n", "6 -25.66\n", "7 -25.66\n", "8 -25.66\n", "9 -25.66\n", "dtype: float64" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Teq15_4H2O-Teq15_2H2O" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exporting data\n", "- There are a number of ways you can export data to excel\n", "- The first example appends these new calculations onto a copy of the \"my_input\" dataframe. This means you can export a spreadsheet that looks exactly like your input spreadsheet, but with the values for the new calculations" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# First make a copy of the dataframe so you don't overwrite the original\n", "my_input_c=my_input.copy()\n", "# To make a new column, you specify my_input_c['new column name']= value\n", "my_input_c['T_Helz1987']=T_Helz1987\n", "# You can add as many new columns as you wish\n", "my_input_c['Teq15_4H2O']=Teq15_4H2O\n", "# You can give your columns in the new dataframe any name you wish...\n", "my_input_c['Temp eq 15 4 wt% H2O']=Teq15_4H2O\n", "# Now, you ue the \"to_excel\" panda function to save this new appended dataframe to excel. The name of the dataframe you've been appended to goes on the let, and the name of the\n", "# file you want to make goes bewteen the ' ' signs\n", "my_input_c.to_excel('Thermometry_out1.xlsx')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "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" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }