{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "1d9eccfa",
"metadata": {},
"outputs": [],
"source": [
"from rgrow.sdc import SDC, SDCStrand, SDCParams\n",
"from rgrow.rgrow import SDC1DBindReplace\n",
"from rgrow import State, KTAM, EvolveOutcome\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "73c53980",
"metadata": {},
"outputs": [],
"source": [
"def make_bitcopy_params(N, input=\"0\", conc=1e-7, cdl=10, sdl=20):\n",
" strands = []\n",
"\n",
" match input:\n",
" case \"0\":\n",
" conc0 = 1e-7\n",
" conc1 = 0\n",
" case \"1\":\n",
" conc0 = 0\n",
" conc1 = 1e-7\n",
" case _:\n",
" raise ValueError(\"Input must be '0' or '1'\")\n",
"\n",
" strands.append(SDCStrand(conc0, \"c0\", \"sc0\", \"c0*\", \"input0\", color=\"blue\"))\n",
" # strands.append(SDCStrand(conc1, \"c1\", \"sc0\", \"c1*\", \"input1\", color=\"red\"))\n",
"\n",
" for i in range(1,N):\n",
" strands.append(SDCStrand(conc, \"c0\", f\"sc{i}\", \"c0*\", f\"{i}_0\", color=\"teal\"))\n",
" strands.append(SDCStrand(conc, \"c1\", f\"sc{i}\", \"c1*\", f\"{i}_1\", color=\"orange\"))\n",
"\n",
" params = SDCParams(\n",
" strands=strands,\n",
" # glue_dg_s = (\n",
" # {\"c0\": mean_energies(cdl)} |\n",
" # {\"c1\": mean_energies(cdl)} |\n",
" # {f\"sc{i}\": mean_energies(sdl) for i in range(0,N) }\n",
" # ),\n",
" scaffold = [f\"sc{i}*\" for i in range(0,N)]\n",
" )\n",
"\n",
" return params"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "b7197bb7",
"metadata": {},
"outputs": [],
"source": [
"def time_to_finish(N):\n",
" sys = SDC1DBindReplace(make_bitcopy_params(N))\n",
" state = State((4096*2, N), \"SquareCompact\")\n",
" sys.update_state(state)\n",
" outcome = sys.evolve(state, for_time=10000000)\n",
" if outcome == EvolveOutcome.ReachedZeroRate:\n",
" return state.time\n",
" else:\n",
" return np.nan\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "195a7e70",
"metadata": {},
"outputs": [],
"source": [
"from tqdm.contrib.concurrent import thread_map"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f2c22f82",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4bffed3a41e6484b9fa01eb9750f42a9",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/41 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"vals = np.arange(5, 210, 5)\n",
"out = thread_map(time_to_finish, vals)"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "dd4d6f81",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "1f4937f3",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x110898590>]"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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+fiMGsR1vjm4zlxnrzkbgr+jtQVHA05ycvJ168I65ERE/O+QJA04ofIPG8r0GnOduc5ewc8z19lr4kLsd3RlGicYeAwAADyJkAMAADwprENOdHS0zJs3z67BdQ51/Dxznb2En2eudXXwme+bfwUAABCCwrolBwAAeBchBwAAeBIhBwAAeBIhBwAAeFLYhpxFixZJ27ZtpUGDBtKvXz/ZvXt3bZ9SSMvMzJQ+ffrILbfcIi1atJCHH35YcnJyAmouXrwoU6ZMkWbNmkmjRo3k0UcflVOnTtXaOXvB/PnzxefzyfTp093HuM7V46uvvpJ/+Id/sD+vMTExkpqaKnv37nX365yNuXPnSsuWLe3+gQMHyueff15Nzx4+ysrK5Nlnn5V27drZ63jbbbfJP//zPwd8JhHXOnjvv/++PPjgg/aOwPo74t133w3YX5lr+s0338jIkSPtDQIbN24s48aNk++++05CiglDy5cvN1FRUeaPf/yjOXz4sJkwYYJp3LixOXXqVG2fWshKT083b775pjl06JA5cOCAuf/++01KSor57rvv3JpJkyaZ1q1bmy1btpi9e/eaO++80/zoRz+q1fMOZbt37zZt27Y13bp1M9OmTXMf5zpX3TfffGPatGljfv7zn5tdu3aZL7/80mzatMl88cUXbs38+fNNfHy8effdd83HH39s/uZv/sa0a9fOXLhwoRrOIHz8+te/Ns2aNTNr1641ubm5ZtWqVaZRo0Zm4cKFbg3XOnjr1683v/zlL83q1as1LZo1a9YE7K/MNb3vvvtM9+7dzc6dO81//dd/mQ4dOpgRI0aYUBKWIadv375mypQp7nZZWZlJTk42mZmZtXpeXnL69Gn7P9b27dvtdmFhoalfv779Beb47LPPbE12dnYtnmloOnfunPnBD35gNm/ebH784x+7IYfrXD3mzJlj7r777mvuLy8vN0lJSebFF190H9NrHx0dbd55551qOovwMGTIEDN27NiAx4YOHWpGjhxpv+ZaV51cEXIqc00//fRT+3179uxxazZs2GB8Pp/56quvTKgIu+6qS5cuyb59+2zTnP9nWOl2dnZ2rZ6blxQVFQV8CKpe89LS0oDr3qlTJ0lJSeG63wDt9hsyZEjA9eQ6V58///nP0rt3b/m7v/s72/36wx/+UP7whz+4+3NzcyU/Pz/g+uvn6GjXN79HgvOjH/1ItmzZIv/93/9ttz/++GP54IMPZPDgwVzrGpJbiZ9fXWsXlf5/4NB6fb/ctWuXhIqw+4DOgoIC2wecmJgY8LhuHzlypNbOy0vKy8vtGJG77rpLunbtah/T/6GioqLs/zRXXnfdh8pbvny57N+/X/bs2XPVPq5z9fjyyy9l8eLFMnPmTHn66afttf7FL35hf4ZHjx7t/sxW9HuEn+fgPPXUU/ZTsPWPnsjISPv7+de//rUdC+L8THOtq1d+Ja6prjXg+6tXr579wzWUfsbDLuTg5rQyHDp0yP41hup1/PhxmTZtmmzevNkOmkfNBXX9C/aFF16w29qSoz/TS5YssSEH1WflypWybNkyefvtt6VLly5y4MAB+0eSDpjlWqOqwq67KiEhwf61cOWsHt1OSkqqtfPyiqlTp8ratWtl69at0qpVK/dxvbbaVVhYWBhQz3UPjnb7nT59Wnr27Gn/qtJl+/bt8vLLL9uv9S8xrnPV6YyTzp07Bzx2xx13SF5env3a+V3B75GqmzVrlm3NGT58uJ3BNmrUKJkxY4adscm1rhlJlfj51bX+rvF3+fJlO+MqlN4rwy7kaHNzr169bB+w/19tup2Wllar5xbKdGybBpw1a9ZIVlaWnQ7qT695/fr1A667TjHXNw2ue+UNGDBADh48aP/adRZtcdCmfedrrnPVaVfrlbdA0DEjbdq0sV/rz7f+ovf/edYuFx2rwM9zcM6fP2/HefjTP0T19zLXuma0q8TPr671j1L9w8qhv9v130XH7oQME6ZTyHUU+dKlS+0I8okTJ9op5Pn5+bV9aiFr8uTJdjritm3bzMmTJ93l/PnzAVObdVp5VlaWnUKelpZmF1SN/+wqrnP1Tc+vV6+end78+eefm2XLlpnY2Fjz7//+7wFTcPX3xp/+9CfzySefmIceeogp5Ddg9OjR5tZbb3WnkOuU54SEBDN79myudRVnYH700Ud20bf63/72t/br//mf/6n0z69OIf/hD39ob6PwwQcf2BmdTCEPEa+88op9w9X75eiUcr0PAG6c/k9U0aL3znHo/zyPP/64adKkiX3DeOSRR2wQQvWGHK5z9XjvvfdM165d7R9EnTp1Mq+//nrAfp2G++yzz5rExERbM2DAAJOTk1NNzx4+zp49a39+9fdxgwYNTPv27e39XUpKStwarnXwtm7dWuHvZA2Vlb2mZ86csaFG71sUFxdnxowZY8NTKPHpf2q7NQkAAKC6hd2YHAAAEB4IOQAAwJMIOQAAwJMIOQAAwJMIOQAAwJMIOQAAwJMIOQAAwJMIOQAAwJMIOQAAwJMIOQAAwJMIOQAAwJMIOQAAQLzo/wEc+Ug17H2GfwAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(vals, out, '.') "
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "e3fe058f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[64.09772134527078,\n",
" 304.5915070323615,\n",
" 753.1183193599702,\n",
" 1350.456851551759,\n",
" 2391.2459073746218,\n",
" 3129.416845355924,\n",
" 4851.791561241512,\n",
" 5726.096134267589,\n",
" 6505.209166467205,\n",
" 7802.088193168031,\n",
" 6760.345824710177,\n",
" 14241.782010066809,\n",
" 11984.738741048528,\n",
" 15305.414086562152,\n",
" 24615.8661648729,\n",
" 17719.546085194146,\n",
" 22460.049728217076,\n",
" 22844.683712281472,\n",
" 31163.063444011168,\n",
" 38932.65609738,\n",
" 37401.22144138293]"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"out"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "fe286144",
"metadata": {},
"outputs": [],
"source": [
"state = State((32, 10), \"SquareCompact\")\n",
"\n",
"sys.update_state(state)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "be96aed8",
"metadata": {},
"outputs": [],
"source": [
"sys.setup_state(state)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "3958e3a3",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"State(n_tiles=0, time=0 s, events=0, size=(10, 32), total_rate=608)"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"state"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2be32435",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"EvolveOutcome.ReachedZeroRate"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "5e815b29",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: >"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 600x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "3af47f36",
"metadata": {},
"outputs": [],
"source": []
}
],
"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.14.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}