diff --git a/Plots_Droplet_FRAP.ipynb b/Plots_Droplet_FRAP.ipynb
index 91fc4abd6f6c6d5cb686cfcab358d9f7fd6cdd14..a325c4cb4889dfab47f76e09651f9fc337a0c8d4 100644
--- a/Plots_Droplet_FRAP.ipynb
+++ b/Plots_Droplet_FRAP.ipynb
@@ -14,7 +14,8 @@
    "outputs": [],
    "source": [
     "from fem_sol import frap_solver\n",
-    "from matplotlib import rc, rcParams\n",
+    "from matplotlib import cm, rc, rcParams\n",
+    "from matplotlib.ticker import MaxNLocator\n",
     "import fem_utils\n",
     "import matplotlib.pyplot as plt\n",
     "import numpy as np\n",
@@ -40,8 +41,8 @@
     "pl.rcParams.update(params)\n",
     "\n",
     "def nice_fig(xla, yla, xli, yli, size, fs=12): \n",
-    "#     rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})\n",
-    "    rc('font',**{'family':'serif','serif':['Palatino']})\n",
+    "    rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})\n",
+    "#     rc('font',**{'family':'serif','serif':['Palatino']})\n",
     "    plt.gcf().set_size_inches(size[0], size[1])\n",
     "    plt.xlabel(xla,fontsize=fs)  \n",
     "    plt.ylabel(yla,fontsize=fs)\n",
@@ -454,7 +455,131 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Figure 4: Obtaining info about outside."
+    "### Figure 4: Obtaining info about outside: experiments."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "**Panel: data time course with full model.**"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "PLYS = np.loadtxt(fol+'Fig4/PLYS_timecourse.csv', delimiter=',')\n",
+    "PLYS_fit = np.loadtxt(fol+'Fig4/PLYS_fit_timecourse.csv', delimiter=',')\n",
+    "l_data = plt.plot(PLYS[:, 0], PLYS[:, 1:], '#1f77b4', lw=3,\n",
+    "                  label='Experiment')\n",
+    "l_fit = plt.plot(PLYS_fit[:, 0], PLYS_fit[:, 1:], '--', lw=2,\n",
+    "                 c=sns.color_palette()[1], label='Simulation')\n",
+    "nice_fig('x [$\\mu m$]', 'intensity (a.u)', [0, 2.4*np.max(PLYS[:, 0])],\n",
+    "         [0,0.5], [2.3,2])\n",
+    "plt.legend([l_data[0], l_fit[0]], ['ATP/PLYS', 'Full model'], frameon=False,\n",
+    "           fontsize=9, handletextpad=0.4, handlelength=0.8)\n",
+    "save_nice_fig(fol+'Fig4/PLYS_spat_recov.pdf')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "**Panel: Experimental Partitioning vs $D_{out}$ for CMD**"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "PLYS = pd.read_csv('/Users/hubatsch/Desktop/DropletFRAP/Latex/Figures/Fig4/PLYS.csv')\n",
+    "CMD = pd.read_csv('/Users/hubatsch/Desktop/DropletFRAP/Latex/Figures/Fig4/CMD.csv')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "fig, ax1 = plt.subplots()\n",
+    "plt.sca(ax1)\n",
+    "sns.lineplot(x=\"P\", y=\"D_out\", data=CMD, color=sns.color_palette()[1], ci='sd')\n",
+    "sns.lineplot(x=\"P\", y=\"D_out\", data=PLYS, color=sns.color_palette()[2], ci='sd')\n",
+    "plt.plot(np.logspace(0, 2, 10), 2*np.logspace(0, 2, 10), '--', c='grey')\n",
+    "ax1.set_yscale('log')\n",
+    "ax1.set_xscale('log')\n",
+    "nice_fig('Partitioning P', '$D_{out} \\;[\\mu m^2s^{-1}]$', [1,100], [0.1,100], [2.3,2])\n",
+    "plt.legend(['CMD/PLYS', 'PLYS/ATP'], frameon=False, fontsize=9)\n",
+    "plt.xticks([1, 10, 100]);\n",
+    "save_nice_fig(fol+'Fig4/PLYS_CMD.pdf')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "**Panel: Experimental Partitioning vs $D_out$ for PGL-3**"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "PGL_50 = pd.read_csv('/Users/hubatsch/Desktop/DropletFRAP/Latex/Figures/Fig4/PGL_50.csv')\n",
+    "PGL_60 = pd.read_csv('/Users/hubatsch/Desktop/DropletFRAP/Latex/Figures/Fig4/PGL_60.csv')\n",
+    "PGL_75 = pd.read_csv('/Users/hubatsch/Desktop/DropletFRAP/Latex/Figures/Fig4/PGL_75.csv')\n",
+    "PGL_90 = pd.read_csv('/Users/hubatsch/Desktop/DropletFRAP/Latex/Figures/Fig4/PGL_90.csv')\n",
+    "PGL_100 = pd.read_csv('/Users/hubatsch/Desktop/DropletFRAP/Latex/Figures/Fig4/PGL_100.csv')\n",
+    "PGL_120 = pd.read_csv('/Users/hubatsch/Desktop/DropletFRAP/Latex/Figures/Fig4/PGL_120.csv')\n",
+    "PGL_150 = pd.read_csv('/Users/hubatsch/Desktop/DropletFRAP/Latex/Figures/Fig4/PGL_150.csv')\n",
+    "PGL_180 = pd.read_csv('/Users/hubatsch/Desktop/DropletFRAP/Latex/Figures/Fig4/PGL_180.csv')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "fig, ax1 = plt.subplots()\n",
+    "plt.sca(ax1)\n",
+    "sns.set_palette(sns.color_palette(\"Oranges\", 9))\n",
+    "# sns.color_palette(\"flare\", as_cmap=True)\n",
+    "l50 = sns.lineplot(x=\"P\", y=\"D_out\", data=PGL_50, color=sns.color_palette()[1], ci=None)\n",
+    "l60 = sns.lineplot(x=\"P\", y=\"D_out\", data=PGL_60, color=sns.color_palette()[2], ci=None)\n",
+    "l75 = sns.lineplot(x=\"P\", y=\"D_out\", data=PGL_75, color=sns.color_palette()[3], ci=None)\n",
+    "l90 = sns.lineplot(x=\"P\", y=\"D_out\", data=PGL_90, color=sns.color_palette()[4], ci=None)\n",
+    "leg1 = plt.legend(['50 mM', '60 mM', '75 mM', '90 mM'], labelspacing=0.3,\n",
+    "           loc=(0.65, 0.0), handletextpad=0.4, handlelength=0.5, frameon=0)\n",
+    "l100 = sns.lineplot(x=\"P\", y=\"D_out\", data=PGL_100, color=sns.color_palette()[5], ci=None)\n",
+    "l120 = sns.lineplot(x=\"P\", y=\"D_out\", data=PGL_120, color=sns.color_palette()[6], ci=None)\n",
+    "l150 = sns.lineplot(x=\"P\", y=\"D_out\", data=PGL_150, color=sns.color_palette()[7], ci=None)\n",
+    "l180 = sns.lineplot(x=\"P\", y=\"D_out\", data=PGL_180, color=sns.color_palette()[8], ci=None)\n",
+    "plt.plot(np.logspace(0, 3, 10), 0.07*np.logspace(0, 3, 10), '--', c='grey')\n",
+    "ax1.set_yscale('log')\n",
+    "ax1.set_xscale('log')\n",
+    "nice_fig('Partitioning P', '$D_{out} \\;[\\mu m^2 s^{-1}]$', [1,1000], [0.0003,200], [2.3,2])\n",
+    "plt.xticks([1, 10, 100, 1000]);\n",
+    "plt.legend(loc=1)\n",
+    "plt.legend(['50 mM', '60 mM', '75 mM', '90 mM', '100 mM', '120 mM', '150 mM', '180 mM'], labelspacing=0.3,\n",
+    "           loc=(0, 0.56), handletextpad=0.4, handlelength=0.5, frameon=0)\n",
+    "plt.gca().add_artist(leg1)\n",
+    "save_nice_fig(fol+'Fig4/PGL-3.pdf')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Figure 5: Obtaining info about outside: theory."
    ]
   },
   {
@@ -515,12 +640,62 @@
     "save_nice_fig(fol+'Fig4/D_vs_Cost.pdf')"
    ]
   },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "**Panel: Valley in parameter space**"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "con = np.loadtxt(fol+'Fig4/Valley.csv', delimiter=',')\n",
+    "levels = MaxNLocator(nbins=15).tick_values(np.log10(con[:, 2:].min()), np.log10(con[:, 2:].max()))\n",
+    "nice_fig('Partitioning P', '$D_{out} \\;[\\mu m^2 s^{-1}]$', [1, 3], [-2,1], [2.3,2])\n",
+    "CS = plt.contourf(np.log10(con[:, 0]), np.log10(con[:, 1]), np.log10(con[:, 2:]), levels=levels, cmap=cm.coolwarm)\n",
+    "plt.plot(np.log10(150), np.log10(10**-1), 'y*', label='Initial Simul.', markersize=3)\n",
+    "plt.legend(loc=(0, 0.83), frameon=False, handletextpad=0.4)\n",
+    "plt.xticks([1, 2, 3], ['$10^1$', '$10^2$', '$10^3$'])\n",
+    "plt.yticks([-2, -1, 0, 1], ['$10^{-2}$', '$10^{-1}$', '$10^0$', '$10^1$'])\n",
+    "plt.tick_params('x', pad=5)\n",
+    "fig1 = plt.gcf()\n",
+    "clb = fig1.colorbar(CS, ticks=[0, -2, -4, -6])\n",
+    "clb.ax.set_title('Cost')\n",
+    "save_nice_fig(fol+'Fig4/Sim_D_out_P.pdf')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "**Panel: Zoom in for valley in parameter space**"
+   ]
+  },
   {
    "cell_type": "code",
    "execution_count": null,
    "metadata": {},
    "outputs": [],
-   "source": []
+   "source": [
+    "levels = MaxNLocator(nbins=15).tick_values(np.log10(con[:, 2:].min()), np.log10(con[:, 2:].max()))\n",
+    "nice_fig('Partitioning P', '', [1.9, 2.4], [-1.5,-0.5], [2.3,2])\n",
+    "CS = plt.contourf(np.log10(con[16:-27, 0]), np.log10(con[16:-27, 1]),\n",
+    "                  np.log10(con[16:-27, 2+16:-27]), levels=levels,\n",
+    "                  cmap=cm.coolwarm, vmax=-1.5)\n",
+    "plt.plot(np.log10(150), np.log10(10**-1), 'y*', label='Initial Simul.', markersize=3)\n",
+    "plt.legend(loc=(0, 0.83), frameon=False, handletextpad=0.4)\n",
+    "plt.xticks([2, 2.25], ['$10^2$', '$10^{2.25}$'])\n",
+    "plt.yticks([-1.5, -1, -0.5], ['$10^{-1.5}$', '$10^{-1}$', '$10^{-0.5}$'])\n",
+    "plt.tick_params('x', pad=5)\n",
+    "fig1 = plt.gcf()\n",
+    "clb = fig1.colorbar(CS, ticks=[-2, -4, -6])\n",
+    "clb.ax.set_title('Cost')\n",
+    "save_nice_fig(fol+'Fig4/Sim_D_out_P_inset.pdf')"
+   ]
   }
  ],
  "metadata": {