-
-
Save maxentile/56661d087919d38b0693a44794f3ccab to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"0+untagged.960.gcdaae0a.dirty\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"[12:32:29] Warning: molecule is tagged as 3D, but all Z coords are zero\n", | |
"WARNING:jax._src.lib.xla_bridge:No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"generating samples (seed=2022)\n", | |
"\tburning in for 50000 steps...\n", | |
"\tdone! (7.8 seconds)\n", | |
"\tproduction (n_samples=500)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"100%|██████████| 500/500 [01:19<00:00, 6.30it/s]" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"\tdone! (79.4 seconds)\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"import timemachine\n", | |
"print(timemachine.__version__)\n", | |
"\n", | |
"from time import time\n", | |
"\n", | |
"import numpy as np\n", | |
"from timemachine import lib\n", | |
"from timemachine.constants import BOLTZ, DEFAULT_FF\n", | |
"from timemachine.datasets import fetch_freesolv\n", | |
"from timemachine.ff import Forcefield\n", | |
"from timemachine.lib import custom_ops\n", | |
"from timemachine.md import enhanced\n", | |
"from timemachine.md.barostat.utils import get_bond_list, get_group_indices\n", | |
"\n", | |
"temperature = 300\n", | |
"\n", | |
"kBT = BOLTZ * temperature\n", | |
"\n", | |
"ff = Forcefield.load_from_file(DEFAULT_FF)\n", | |
"\n", | |
"freesolv = {mol.GetProp(\"_Name\"): mol for mol in fetch_freesolv()}\n", | |
"\n", | |
"keys = list(freesolv.keys())\n", | |
"from tqdm import tqdm\n", | |
"\n", | |
"\n", | |
"class SolventPhaseSystem:\n", | |
" def __init__(self, mol, ff):\n", | |
" self.mol = mol\n", | |
" self.ff = ff\n", | |
"\n", | |
" self.potentials, self.params, self.masses, self.coords, self.box = enhanced.get_solvent_phase_system(\n", | |
" mol, ff, lamb=0.0, minimize_energy=True\n", | |
" )\n", | |
"\n", | |
" num_total_atoms = len(self.coords)\n", | |
" num_ligand_atoms = self.mol.GetNumAtoms()\n", | |
" self.ligand_idxs = np.array(np.arange(num_total_atoms - num_ligand_atoms, num_total_atoms), dtype=np.int32)\n", | |
" assert len(self.ligand_idxs) == self.mol.GetNumAtoms()\n", | |
"\n", | |
" def construct_context(self, params, seed=2022):\n", | |
" dt = 1.5e-3\n", | |
" friction = 10.0\n", | |
" pressure = 1.0\n", | |
" temperature = 300\n", | |
"\n", | |
" bps = []\n", | |
" for param, potential in zip(params, self.potentials):\n", | |
" bps.append(potential.bind(param))\n", | |
"\n", | |
" all_impls = [bp.bound_impl(np.float32) for bp in bps]\n", | |
"\n", | |
" intg = lib.LangevinIntegrator(temperature, dt, friction, self.masses, seed)\n", | |
" intg_impl = intg.impl()\n", | |
"\n", | |
" bond_list = get_bond_list(self.potentials[0])\n", | |
" group_idxs = get_group_indices(bond_list)\n", | |
" barostat_interval = 5\n", | |
"\n", | |
" barostat = lib.MonteCarloBarostat(len(self.masses), pressure, temperature, group_idxs, barostat_interval, seed + 1)\n", | |
" barostat_impl = barostat.impl(all_impls)\n", | |
"\n", | |
" ctxt = custom_ops.Context(self.coords, np.zeros_like(self.coords), self.box, intg_impl, all_impls, barostat_impl)\n", | |
"\n", | |
" # ugg, otherwise code that returns only `ctxt` will segfault...\n", | |
" ctxt._all_impls = all_impls\n", | |
" ctxt._barostat = barostat\n", | |
" ctxt._barostat_impl = barostat_impl\n", | |
" ctxt._intg = intg\n", | |
" ctxt._intg_impl = intg_impl\n", | |
"\n", | |
" return ctxt\n", | |
"\n", | |
" def generate_samples(self,\n", | |
" params,\n", | |
" n_samples=500,\n", | |
" seed=2022,\n", | |
" burn_in=50_000,\n", | |
" thinning=1_000,\n", | |
" ):\n", | |
" \"\"\"bind self.potentials to params, construct contexts, run simulation\"\"\"\n", | |
"\n", | |
" print(f\"generating samples (seed={seed})\")\n", | |
" ctxt = self.construct_context(params, seed)\n", | |
" \n", | |
" # burn-in\n", | |
" print(f\"\\tburning in for {burn_in} steps...\")\n", | |
" t0 = time()\n", | |
" _ = ctxt.multiple_steps(burn_in)\n", | |
" t1 = time()\n", | |
" print(f\"\\tdone! ({(t1 - t0):.1f} seconds)\")\n", | |
"\n", | |
" # production\n", | |
" print(f\"\\tproduction (n_samples={n_samples})\")#, thinning={thinning})...\")\n", | |
" prod_start_time = time()\n", | |
" samples = []\n", | |
" for _ in tqdm(range(n_samples)):\n", | |
" _ = ctxt.multiple_steps(thinning)\n", | |
" samples.append((ctxt.get_x_t(), ctxt.get_box()))\n", | |
" prod_end_time = time()\n", | |
" prod_elapsed_time = prod_end_time - prod_start_time\n", | |
" print(f\"\\tdone! ({prod_elapsed_time:.1f} seconds)\")\n", | |
"\n", | |
" return samples\n", | |
"\n", | |
"\n", | |
"from timemachine.potentials import generic\n", | |
"\n", | |
"\n", | |
"def make_gpu_impl(solvent_system):\n", | |
" flat_params = np.concatenate([p.reshape(-1) for p in solvent_system.params])\n", | |
"\n", | |
" generic_potentials = [generic.from_gpu(p) for p in solvent_system.potentials]\n", | |
" summed_potential = generic.SummedPotential(generic_potentials, solvent_system.params)\n", | |
" \n", | |
" return summed_potential.to_gpu().bind(flat_params).bound_impl(np.float32)\n", | |
"\n", | |
"key = keys[123]\n", | |
"mol = freesolv[key]\n", | |
"solvent_system = SolventPhaseSystem(mol, ff)\n", | |
"samples = solvent_system.generate_samples(solvent_system.params)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"impl = make_gpu_impl(solvent_system)\n", | |
"\n", | |
"def log_q(x, box):\n", | |
" _, energy = impl.execute(x, box)\n", | |
" return -energy / (BOLTZ * temperature)\n", | |
"\n", | |
"GUARD_THRESHOLD = 1e6\n", | |
"\n", | |
"def guarded_log_q(x, box):\n", | |
" _, energy = impl.execute(x, box)\n", | |
" if abs(energy) > GUARD_THRESHOLD:\n", | |
" energy = +np.inf\n", | |
" return -energy / (BOLTZ * temperature)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"log_qs = np.array([log_q(x, box) for (x, box) in samples])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1e-07 0.9984343772108439\n", | |
"1.204503540258781e-07 0.9982059049451621\n", | |
"1.45082877849594e-07 0.9976786711127699\n", | |
"1.747528400007683e-07 0.9976135579483629\n", | |
"2.104904144512022e-07 0.9967714487349688\n", | |
"2.5353644939701113e-07 0.996511473060905\n", | |
"3.0538555088334124e-07 0.9962743299786045\n", | |
"3.678379771828634e-07 0.9958815340854729\n", | |
"4.4306214575838777e-07 0.9937550168424015\n", | |
"5.336699231206313e-07 0.9936058649393265\n", | |
"6.428073117284319e-07 0.9925583865828357\n", | |
"7.742636826811278e-07 0.9897877676676313\n", | |
"9.326033468832199e-07 0.9885357859088406\n", | |
"1.1233240329780266e-06 0.9860398287567487\n", | |
"1.3530477745798075e-06 0.9829508239998833\n", | |
"1.6297508346206435e-06 0.9792893554257223\n", | |
"1.9630406500402726e-06 0.9771569142921392\n", | |
"2.364489412645407e-06 0.9688947277055902\n", | |
"2.848035868435805e-06 0.9650459890752933\n", | |
"3.430469286314919e-06 0.9599713763715619\n", | |
"4.132012400115334e-06 0.9435066270965449\n", | |
"4.977023564332114e-06 0.9418875436891719\n", | |
"5.994842503189409e-06 0.9273068605058433\n", | |
"7.220809018385471e-06 0.9159346968042907\n", | |
"8.697490026177835e-06 0.8960403889565444\n", | |
"1.0476157527896663e-05 0.8746210057631183\n", | |
"1.2618568830660211e-05 0.8418358703430197\n", | |
"1.5199110829529332e-05 0.8230793027362933\n", | |
"1.8307382802953696e-05 0.8004185080920003\n", | |
"2.2051307399030455e-05 0.7740019537920515\n", | |
"2.656087782946684e-05 0.7062601783050801\n", | |
"3.199267137797385e-05 0.6297787146653154\n", | |
"3.8535285937105356e-05 0.5984385921584793\n", | |
"4.641588833612782e-05 0.5096772362325392\n", | |
"5.590810182512223e-05 0.42398390641944395\n", | |
"6.734150657750829e-05 0.36454120018054836\n", | |
"8.111308307896872e-05 0.24727522035438756\n", | |
"9.770099572992247e-05 0.18226035191873932\n", | |
"0.0001176811952434999 0.08993404410980592\n", | |
"0.00014174741629268062 0.04882041017157599\n", | |
"0.00017073526474706922 0.019985384682531915\n", | |
"0.00020565123083486536 0.0035577650243146645\n", | |
"0.0002477076355991711 0.002030251763101248\n", | |
"0.00029836472402833405 2.409662398535789e-08\n", | |
"0.00035938136638046295 9.652214933780003e-14\n", | |
"0.00043287612810830614 9.746218902544813e-23\n", | |
"0.000521400828799969 2.168768504414223e-26\n", | |
"0.0006280291441834259 1.3194875868647697e-46\n", | |
"0.000756463327554629 1.313994224271355e-70\n", | |
"0.0009111627561154896 5.37581316307847e-112\n", | |
"0.0010974987654930567 6.574283845652559e-179\n", | |
"0.0013219411484660314 4.6108759081831136e-263\n", | |
"0.0015922827933410938 0.0\n", | |
"0.0019179102616724887 0.0\n", | |
"0.0023101297000831626 0.0\n", | |
"0.0027825594022071257 0.0\n", | |
"0.0033516026509388475 0.0\n", | |
"0.004037017258596558 0.0\n", | |
"0.004862601580065354 0.0\n", | |
"0.005857020818056673 0.0\n", | |
"0.007054802310718645 0.0\n", | |
"0.008497534359086456 0.0\n", | |
"0.010235310218990268 0.0\n", | |
"0.012328467394420685 0.0\n", | |
"0.014849682622544665 0.0\n", | |
"0.01788649529057435 0.0\n", | |
"0.021544346900318867 0.0\n", | |
"0.025950242113997372 0.0\n", | |
"0.03125715849688242 0.0\n", | |
"0.037649358067924715 0.006\n", | |
"0.04534878508128591 0.06\n", | |
"0.054622772176843484 0.314\n", | |
"0.06579332246575682 0.466\n", | |
"0.07924828983539185 0.488\n", | |
"0.09545484566618347 0.464\n", | |
"0.1149756995397738 0.532\n", | |
"0.13848863713938744 0.502\n", | |
"0.1668100537200059 0.486\n", | |
"0.200923300256505 0.512\n", | |
"0.24201282647943834 0.512\n", | |
"0.2915053062825182 0.5\n", | |
"0.35111917342151344 0.478\n", | |
"0.4229242874389508 0.524\n", | |
"0.5094138014816385 0.49\n", | |
"0.6135907273413176 0.51\n", | |
"0.7390722033525791 0.51\n", | |
"0.8902150854450392 0.524\n", | |
"1.0722672220103253 0.552\n", | |
"1.2915496650148854 0.52\n", | |
"1.5556761439304754 0.506\n", | |
"1.8738174228603868 0.486\n", | |
"2.2570197196339215 0.502\n", | |
"2.7185882427329457 0.492\n", | |
"3.2745491628777317 0.48\n", | |
"3.944206059437664 0.534\n", | |
"4.750810162102803 0.448\n", | |
"5.72236765935022 0.52\n", | |
"6.892612104349709 0.514\n", | |
"8.302175681319753 0.51\n", | |
"10.0 0.472\n" | |
] | |
} | |
], | |
"source": [ | |
"# get log accept prob of RW-MH as a function of proposal stddev\n", | |
"\n", | |
"np.random.seed(2022)\n", | |
"\n", | |
"def compute_log_accept_probs(samples, proposal_sig=0.0001):\n", | |
" log_qs_proposed = []\n", | |
" for (x, box) in samples:\n", | |
" y = x + np.random.randn(*x.shape) * proposal_sig\n", | |
" log_qs_proposed.append(log_q(y, box))\n", | |
" log_qs_proposed = np.array(log_qs_proposed)\n", | |
" log_accept_probs = np.minimum(0, log_qs_proposed - log_qs)\n", | |
" return log_accept_probs\n", | |
"\n", | |
"\n", | |
"proposal_stddevs = 10**np.linspace(-7, 1, 100)\n", | |
"\n", | |
"log_accept_probs = []\n", | |
"avg_accept_probs = []\n", | |
"\n", | |
"for proposal_stddev in proposal_stddevs:\n", | |
"\n", | |
" log_accept_probs.append(compute_log_accept_probs(samples, proposal_stddev))\n", | |
" avg_accept_probs.append(np.mean(np.exp(log_accept_probs[-1])))\n", | |
"\n", | |
" print(proposal_stddev, avg_accept_probs[-1])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.collections.LineCollection at 0x7fbaf9092b90>" | |
] | |
}, | |
"execution_count": 5, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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", | |
"text/plain": [ | |
"<Figure size 640x480 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"import matplotlib.pyplot as plt\n", | |
"\n", | |
"plt.title('spurious MC move acceptance due to overflow')\n", | |
"plt.plot(proposal_stddevs, avg_accept_probs, '.-')\n", | |
"plt.xscale('log')\n", | |
"#plt.yscale('log')\n", | |
"plt.xlabel('RW-MH proposal stddev (nm)')\n", | |
"plt.ylabel('acceptance rate')\n", | |
"#plt.ylim(0,1.1)\n", | |
"plt.hlines([0,0.5,1], proposal_stddevs[0], proposal_stddevs[-1], color='grey', linestyles='--')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1e-07 0.9984343772108439\n", | |
"1.204503540258781e-07 0.9982059049451621\n", | |
"1.45082877849594e-07 0.9976786711127699\n", | |
"1.747528400007683e-07 0.9976135579483629\n", | |
"2.104904144512022e-07 0.9967714487349688\n", | |
"2.5353644939701113e-07 0.996511473060905\n", | |
"3.0538555088334124e-07 0.9962743299786045\n", | |
"3.678379771828634e-07 0.9958815340854729\n", | |
"4.4306214575838777e-07 0.9937550168424015\n", | |
"5.336699231206313e-07 0.9936058649393265\n", | |
"6.428073117284319e-07 0.9925583865828357\n", | |
"7.742636826811278e-07 0.9897877676676313\n", | |
"9.326033468832199e-07 0.9885357859088406\n", | |
"1.1233240329780266e-06 0.9860398287567487\n", | |
"1.3530477745798075e-06 0.9829508239998833\n", | |
"1.6297508346206435e-06 0.9792893554257223\n", | |
"1.9630406500402726e-06 0.9771569142921392\n", | |
"2.364489412645407e-06 0.9688947277055902\n", | |
"2.848035868435805e-06 0.9650459890752933\n", | |
"3.430469286314919e-06 0.9599713763715619\n", | |
"4.132012400115334e-06 0.9435066270965449\n", | |
"4.977023564332114e-06 0.9418875436891719\n", | |
"5.994842503189409e-06 0.9273068605058433\n", | |
"7.220809018385471e-06 0.9159346968042907\n", | |
"8.697490026177835e-06 0.8960403889565444\n", | |
"1.0476157527896663e-05 0.8746210057631183\n", | |
"1.2618568830660211e-05 0.8418358703430197\n", | |
"1.5199110829529332e-05 0.8230793027362933\n", | |
"1.8307382802953696e-05 0.8004185080920003\n", | |
"2.2051307399030455e-05 0.7740019537920515\n", | |
"2.656087782946684e-05 0.7062601783050801\n", | |
"3.199267137797385e-05 0.6297787146653154\n", | |
"3.8535285937105356e-05 0.5984385921584793\n", | |
"4.641588833612782e-05 0.5096772362325392\n", | |
"5.590810182512223e-05 0.42398390641944395\n", | |
"6.734150657750829e-05 0.36454120018054836\n", | |
"8.111308307896872e-05 0.24727522035438756\n", | |
"9.770099572992247e-05 0.18226035191873932\n", | |
"0.0001176811952434999 0.08993404410980592\n", | |
"0.00014174741629268062 0.04882041017157599\n", | |
"0.00017073526474706922 0.019985384682531915\n", | |
"0.00020565123083486536 0.0035577650243146645\n", | |
"0.0002477076355991711 0.002030251763101248\n", | |
"0.00029836472402833405 2.409662398535789e-08\n", | |
"0.00035938136638046295 9.652214933780003e-14\n", | |
"0.00043287612810830614 9.746218902544813e-23\n", | |
"0.000521400828799969 2.168768504414223e-26\n", | |
"0.0006280291441834259 1.3194875868647697e-46\n", | |
"0.000756463327554629 1.313994224271355e-70\n", | |
"0.0009111627561154896 5.37581316307847e-112\n", | |
"0.0010974987654930567 6.574283845652559e-179\n", | |
"0.0013219411484660314 4.6108759081831136e-263\n", | |
"0.0015922827933410938 0.0\n", | |
"0.0019179102616724887 0.0\n", | |
"0.0023101297000831626 0.0\n", | |
"0.0027825594022071257 0.0\n", | |
"0.0033516026509388475 0.0\n", | |
"0.004037017258596558 0.0\n", | |
"0.004862601580065354 0.0\n", | |
"0.005857020818056673 0.0\n", | |
"0.007054802310718645 0.0\n", | |
"0.008497534359086456 0.0\n", | |
"0.010235310218990268 0.0\n", | |
"0.012328467394420685 0.0\n", | |
"0.014849682622544665 0.0\n", | |
"0.01788649529057435 0.0\n", | |
"0.021544346900318867 0.0\n", | |
"0.025950242113997372 0.0\n", | |
"0.03125715849688242 0.0\n", | |
"0.037649358067924715 0.0\n", | |
"0.04534878508128591 0.0\n", | |
"0.054622772176843484 0.002\n", | |
"0.06579332246575682 0.004\n", | |
"0.07924828983539185 0.0\n", | |
"0.09545484566618347 0.002\n", | |
"0.1149756995397738 0.008\n", | |
"0.13848863713938744 0.002\n", | |
"0.1668100537200059 0.0\n", | |
"0.200923300256505 0.002\n", | |
"0.24201282647943834 0.0\n", | |
"0.2915053062825182 0.008\n", | |
"0.35111917342151344 0.0\n", | |
"0.4229242874389508 0.002\n", | |
"0.5094138014816385 0.0\n", | |
"0.6135907273413176 0.002\n", | |
"0.7390722033525791 0.0\n", | |
"0.8902150854450392 0.0\n", | |
"1.0722672220103253 0.004\n", | |
"1.2915496650148854 0.002\n", | |
"1.5556761439304754 0.006\n", | |
"1.8738174228603868 0.0\n", | |
"2.2570197196339215 0.006\n", | |
"2.7185882427329457 0.004\n", | |
"3.2745491628777317 0.0\n", | |
"3.944206059437664 0.004\n", | |
"4.750810162102803 0.004\n", | |
"5.72236765935022 0.0\n", | |
"6.892612104349709 0.002\n", | |
"8.302175681319753 0.006\n", | |
"10.0 0.006\n" | |
] | |
} | |
], | |
"source": [ | |
"# also show with guards, same grad parameters...\n", | |
"\n", | |
"guarded_log_qs = np.array([guarded_log_q(x, box) for (x, box) in samples])\n", | |
"\n", | |
"\n", | |
"np.random.seed(2022)\n", | |
"\n", | |
"def compute_guarded_log_accept_probs(samples, proposal_sig=0.0001):\n", | |
" log_qs_proposed = []\n", | |
" for (x, box) in samples:\n", | |
" y = x + np.random.randn(*x.shape) * proposal_sig\n", | |
" log_qs_proposed.append(guarded_log_q(y, box))\n", | |
" log_qs_proposed = np.array(log_qs_proposed)\n", | |
" log_accept_probs = np.minimum(0, log_qs_proposed - log_qs)\n", | |
" return log_accept_probs\n", | |
"\n", | |
"guarded_log_accept_probs = []\n", | |
"guarded_avg_accept_probs = []\n", | |
"\n", | |
"for proposal_stddev in proposal_stddevs:\n", | |
"\n", | |
" guarded_log_accept_probs.append(compute_guarded_log_accept_probs(samples, proposal_stddev))\n", | |
" guarded_avg_accept_probs.append(np.mean(np.exp(guarded_log_accept_probs[-1])))\n", | |
"\n", | |
" print(proposal_stddev, guarded_avg_accept_probs[-1])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.collections.LineCollection at 0x7fbb98904150>" | |
] | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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", | |
"text/plain": [ | |
"<Figure size 640x480 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.title('spurious MC move acceptance due to overflow')\n", | |
"plt.plot(proposal_stddevs, guarded_avg_accept_probs, '.-')\n", | |
"plt.xscale('log')\n", | |
"#plt.yscale('log')\n", | |
"plt.xlabel('RW-MH proposal stddev (nm)')\n", | |
"plt.ylabel('acceptance rate')\n", | |
"#plt.ylim(0,1.1)\n", | |
"plt.hlines([0,0.5,1], proposal_stddevs[0], proposal_stddevs[-1], color='grey', linestyles='--')" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "timemachine", | |
"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.12" | |
}, | |
"orig_nbformat": 4 | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment