{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bilayer Sonophore model: pre-computation of intermolecular pressure\n", "\n", "Profiled simulations of the mechanical model in isolation reveal that the spatial integration of intermolecular pressure $P_M$ is by far the longest internal computation at each iteration. Hence, we seek to decrease its computational cost.\n", "\n", "Luckily, despite its complexity, this integrated pressure term depends solely on leaflet deflection and the nature of its profile is similar to that of its local counterpart.\n", "\n", "Therefore, a precomputing step is defined wherein a Lennard-Jones expression of the form:\n", "\n", "$\\tilde{P_M}(Z)= \\tilde{A_r} \\big[ \\big(\\frac{\\tilde{\\Delta^*}}{2 \\cdot Z + \\Delta(Q_m)}\\big)^\\tilde{x} - \\big(\\frac{\\tilde{\\Delta^*}}{2 \\cdot Z + \\Delta(Q_m)}\\big)^\\tilde{y} \\big]$\n", "\n", "is fitted to the integrated profile and then used as a new predictor of intermolecular pressure during the iterative numerical resolution." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Imports" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import logging\n", "import time\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "from PySONIC.utils import logger, rmse, rsquared\n", "from PySONIC.neurons import getPointNeuron\n", "from PySONIC.core import BilayerSonophore, PmCompMethod, AcousticSource\n", "from PySONIC.constants import *\n", "\n", "# Set logging level\n", "logger.setLevel(logging.INFO)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Functions" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "def plotPmavg(bls, Z, fs=15):\n", " fig, ax = plt.subplots(figsize=(5, 3))\n", " for skey in ['right', 'top']:\n", " ax.spines[skey].set_visible(False)\n", " ax.set_xlabel('Z (nm)', fontsize=fs)\n", " ax.set_ylabel('Pressure (kPa)', fontsize=fs)\n", " ax.set_xticks([0, bls.a * 1e9])\n", " ax.set_xticklabels(['0', 'a'])\n", " ax.set_yticks([-10, 0, 40])\n", " ax.set_ylim([-10, 50])\n", " for item in ax.get_xticklabels() + ax.get_yticklabels():\n", " item.set_fontsize(fs)\n", " ax.plot(Z * 1e9, bls.v_PMavg(Z, bls.v_curvrad(Z), bls.surface(Z)) * 1e-3, label='$P_m$')\n", " ax.plot(Z * 1e9, bls.PMavgpred(Z) * 1e-3, label='$P_{m,approx}$')\n", " ax.axhline(y=0, color='k')\n", " ax.legend(fontsize=fs, frameon=False)\n", " fig.tight_layout()\n", "\n", "def plotZprofiles(bls, US_source, Q, fs=15):\n", " # Run simulations with integrated and predicted intermolecular pressure\n", " t0 = time.perf_counter()\n", " data1, _ = bls.simulate(US_source, Qm, Pm_comp_method=PmCompMethod.direct)\n", " tcomp_direct = time.perf_counter() - t0\n", " print(f'computation time with direct Pm: {tcomp_direct} s')\n", " Z1 = data1['Z'].values[-NPC_DENSE:] * 1e9 # nm\n", " \n", " t0 = time.perf_counter()\n", " data2, _ = bls.simulate(US_source, Qm, Pm_comp_method=PmCompMethod.predict)\n", " tcomp_predict = time.perf_counter() - t0\n", " print(f'computation time with predicted Pm: {tcomp_predict} s')\n", " Z2 = data2['Z'].values[-NPC_DENSE:] * 1e9 # nm\n", " \n", " tcomp_ratio = tcomp_direct / tcomp_predict\n", " \n", " # Plot figure \n", " t = np.linspace(0, US_source.periodicity, US_source.nPerCycle) * 1e6 # us\n", " fig, ax = plt.subplots(figsize=(5, 3))\n", " for skey in ['right', 'top']:\n", " ax.spines[skey].set_visible(False)\n", " ax.set_xlabel('time (us)', fontsize=fs)\n", " ax.set_ylabel('Deflection (nm)', fontsize=fs)\n", " ax.set_xticks([t[0], t[-1]])\n", " for item in ax.get_xticklabels() + ax.get_yticklabels():\n", " item.set_fontsize(fs)\n", " \n", " ax.plot(t, Z1, label='$P_m$')\n", " ax.plot(t, Z2, label='$P_{m,approx}$')\n", " ax.axhline(y=0, color='k')\n", " ax.legend(fontsize=fs, frameon=False)\n", " fig.tight_layout()\n", " \n", " return fig, Z1, Z2, tcomp_ratio" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Parameters" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "pneuron = getPointNeuron('RS')\n", "bls = BilayerSonophore(32e-9, pneuron.Cm0, pneuron.Qm0)\n", "US_source = AcousticSource(500e3, 100e3)\n", "Qm = pneuron.Qm0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Profiles comparison over deflection range " ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "Z = np.linspace(-0.4 * bls.Delta_, bls.a, 1000)\n", "fig = plotPmavg(bls, Z)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Error quantification over a typical acoustic cycle" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ " 30/01/2020 17:15:24: BilayerSonophore(32.0 nm): simulation @ f = 500.00 kHz, A = 100.00 kPa, Q = -71.90 nC/cm2\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "computation time with direct Pm: 12.703268000000008 s\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 30/01/2020 17:15:36: BilayerSonophore(32.0 nm): simulation @ f = 500.00 kHz, A = 100.00 kPa, Q = -71.90 nC/cm2\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "computation time with predicted Pm: 1.3662477000000024 s\n", "Z-error: R2 = 0.9996, RMSE = 0.0454 nm (0.8212% dZ)\n", "computational boost: 9.3-fold\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, Z1, Z2, tcomp_ratio = plotZprofiles(bls, US_source, Qm)\n", "error_Z = rmse(Z1, Z2)\n", "r2_Z = rsquared(Z1, Z2)\n", "err_pct = error_Z / (Z1.max() - Z1.min()) * 1e2\n", "print(f'Z-error: R2 = {r2_Z:.4f}, RMSE = {error_Z:.4f} nm ({err_pct:.4f}% dZ)')\n", "print(f'computational boost: {tcomp_ratio:.1f}-fold')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see, this simplification allows to reduce computation times by more than one order of magnitude, without significantly affecting the resulting deflection profiles." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.3" } }, "nbformat": 4, "nbformat_minor": 4 }