Skip to content

Instantly share code, notes, and snippets.

@iwatobipen
Created January 5, 2026 11:45
Show Gist options
  • Select an option

  • Save iwatobipen/3dd75e59fdfccd5b5f6135f756e91542 to your computer and use it in GitHub Desktop.

Select an option

Save iwatobipen/3dd75e59fdfccd5b5f6135f756e91542 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "2b806ba1-17e2-4b9e-9588-252d24052f35",
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-05T10:34:13.776080Z",
"iopub.status.busy": "2026-01-05T10:34:13.775824Z",
"iopub.status.idle": "2026-01-05T10:34:14.136371Z",
"shell.execute_reply": "2026-01-05T10:34:14.135644Z",
"shell.execute_reply.started": "2026-01-05T10:34:13.776056Z"
}
},
"outputs": [],
"source": [
"from rdkit import Chem\n",
"from rdkit.Chem import Draw\n",
"from rdkit.Chem.Draw import IPythonConsole\n",
"from rxnutils.chem.reaction import ChemicalReaction\n",
"import pandas as pd\n",
"\n",
"# https://raw.githubusercontent.com/snu-micc/LocalMapper/refs/heads/main/comparison/USPTO_sampled.csv\n",
"df = pd.read_csv('./USPTO_sampled.csv')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "d2168e89-5bb1-4efa-9010-d876305c7a90",
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-05T10:34:14.566744Z",
"iopub.status.busy": "2026-01-05T10:34:14.566582Z",
"iopub.status.idle": "2026-01-05T10:34:14.577679Z",
"shell.execute_reply": "2026-01-05T10:34:14.576830Z",
"shell.execute_reply.started": "2026-01-05T10:34:14.566731Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>sampled_id</th>\n",
" <th>RXNMapper</th>\n",
" <th>GraphMapper</th>\n",
" <th>LocalMapper</th>\n",
" <th>RXNMapper_correct</th>\n",
" <th>GraphMapper_correct</th>\n",
" <th>LocalMapper_correct</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>44925</td>\n",
" <td>CCN(CC)CC.CCOCC.CS(C)=O.ClCCl.O=S(=O)=O.[OH:1]...</td>\n",
" <td>[CH2:2]([CH3:1])[N:3]([CH2:4][CH3:5])[CH2:6][C...</td>\n",
" <td>CCN(CC)CC.CCOCC.CS(C)=O.ClCCl.O=S(=O)=O.[O:1]=...</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>11629</td>\n",
" <td>CC#N.O=C(OCc1ccccc1)[N:5]1[CH2:4][C@H:3]([CH2:...</td>\n",
" <td>[CH3:1][C:2]#[N:3].[cH:15]1[cH:14][c:13]([cH:1...</td>\n",
" <td>CC#N.O=C(OCc1ccccc1)[N:1]1[CH2:2][C@H:3]([CH2:...</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>11437</td>\n",
" <td>CC(C)=O.COC[O:20][c:19]1[c:16]([O:17][CH3:18])...</td>\n",
" <td>[CH3:1][C:2]([CH3:3])=[O:4].[ClH:29].[OH2:30]....</td>\n",
" <td>CC(C)=O.COC[O:1][c:2]1[c:3]([O:4][CH3:5])[cH:6...</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" sampled_id RXNMapper \\\n",
"0 44925 CCN(CC)CC.CCOCC.CS(C)=O.ClCCl.O=S(=O)=O.[OH:1]... \n",
"1 11629 CC#N.O=C(OCc1ccccc1)[N:5]1[CH2:4][C@H:3]([CH2:... \n",
"2 11437 CC(C)=O.COC[O:20][c:19]1[c:16]([O:17][CH3:18])... \n",
"\n",
" GraphMapper \\\n",
"0 [CH2:2]([CH3:1])[N:3]([CH2:4][CH3:5])[CH2:6][C... \n",
"1 [CH3:1][C:2]#[N:3].[cH:15]1[cH:14][c:13]([cH:1... \n",
"2 [CH3:1][C:2]([CH3:3])=[O:4].[ClH:29].[OH2:30].... \n",
"\n",
" LocalMapper RXNMapper_correct \\\n",
"0 CCN(CC)CC.CCOCC.CS(C)=O.ClCCl.O=S(=O)=O.[O:1]=... True \n",
"1 CC#N.O=C(OCc1ccccc1)[N:1]1[CH2:2][C@H:3]([CH2:... True \n",
"2 CC(C)=O.COC[O:1][c:2]1[c:3]([O:4][CH3:5])[cH:6... True \n",
"\n",
" GraphMapper_correct LocalMapper_correct \n",
"0 True True \n",
"1 True True \n",
"2 True True "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head(3)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "05a57ebd-296b-452c-bed6-4bba4488c73d",
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-05T10:34:36.982525Z",
"iopub.status.busy": "2026-01-05T10:34:36.982147Z",
"iopub.status.idle": "2026-01-05T10:34:36.993430Z",
"shell.execute_reply": "2026-01-05T10:34:36.992824Z",
"shell.execute_reply.started": "2026-01-05T10:34:36.982492Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<rxnutils.chem.reaction.ChemicalReaction at 0x787136dccda0>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rxns_rxn_mapper = df.RXNMapper.to_list()\n",
"reaction = rxns_rxn_mapper[4]\n",
"rxn = ChemicalReaction(reaction)\n",
"rxn"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "aa37c236-8cdb-46b1-ab78-586c860b086d",
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-05T10:34:37.341362Z",
"iopub.status.busy": "2026-01-05T10:34:37.340815Z",
"iopub.status.idle": "2026-01-05T10:34:37.347735Z",
"shell.execute_reply": "2026-01-05T10:34:37.346674Z",
"shell.execute_reply.started": "2026-01-05T10:34:37.341322Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"['[CH3:1][C:2](=[O:3])[c:4]1[cH:5][cH:6][c:7]([Cl:8])[n:9][cH:10]1']"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rxn.reactants_list"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "d2d7e3b0-2fce-47c8-8a83-522295e34ab3",
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-05T10:34:37.693097Z",
"iopub.status.busy": "2026-01-05T10:34:37.692770Z",
"iopub.status.idle": "2026-01-05T10:34:37.695861Z",
"shell.execute_reply": "2026-01-05T10:34:37.695552Z",
"shell.execute_reply.started": "2026-01-05T10:34:37.693070Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"['CO', 'OC(=O)[O-]', '[BH4-]', '[Na+]', '[Na+]']"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rxn.agents_list"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "0c73a9a1-58e0-4879-8186-91ff8e04735e",
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-05T10:34:38.069535Z",
"iopub.status.busy": "2026-01-05T10:34:38.069139Z",
"iopub.status.idle": "2026-01-05T10:34:38.074040Z",
"shell.execute_reply": "2026-01-05T10:34:38.072754Z",
"shell.execute_reply.started": "2026-01-05T10:34:38.069505Z"
}
},
"outputs": [],
"source": [
"from rdkit.Chem import rdChemReactions"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "2e0d0630-6be0-42ff-9530-9289047a3ae6",
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-05T10:35:55.066124Z",
"iopub.status.busy": "2026-01-05T10:35:55.065813Z",
"iopub.status.idle": "2026-01-05T10:35:55.078601Z",
"shell.execute_reply": "2026-01-05T10:35:55.078098Z",
"shell.execute_reply.started": "2026-01-05T10:35:55.066098Z"
}
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<rdkit.Chem.rdChemReactions.ChemicalReaction at 0x7871fc3784a0>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rdrxn = rdChemReactions.ReactionFromSmarts(reaction, useSmiles=True)\n",
"rdrxn"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "54690c65-afe9-4e73-8440-fb33dde35f80",
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-05T10:36:01.555963Z",
"iopub.status.busy": "2026-01-05T10:36:01.555664Z",
"iopub.status.idle": "2026-01-05T10:36:01.580910Z",
"shell.execute_reply": "2026-01-05T10:36:01.580343Z",
"shell.execute_reply.started": "2026-01-05T10:36:01.555945Z"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAIAAADCEh9HAAAABmJLR0QA/wD/AP+gvaeTAAATqElEQVR4nO3de1BUZR8H8N9huahc3A2QRAUJRMRRUQg0BbSWbLz1+pr3AX0dpLFCfb0MjZNaYyWlqTSaUHmDtbfx1XrVBjWveCsTdCRQBC9gpgJyidvCAvu8fxzall0k9LBndw/fz/SH5+Fx98f083su++w5HGOMAADgWdmYuwAAAOuGGAUAEAQxCgAgCGIUAEAQxCgAgCCIUQAAQRCjAACCIEYBAARBjAIACIIYBQAQBDEKACAIYhQAQBDEKACAIIhRAABBEKMAAIIgRgEABEGMAgAIghgFABAEMQoAIAhiFABAEMQoAIAgiFEAAEEQowAAgiBGAQAEQYwCAAiCGAUAEAQxCgAgCGIUAEAQxCgAgCCIUQAAQRCjAACCIEYBAARBjAIACIIYBQAQBDEKACAIYhQAQBDEKACAIIhRAABBEKMAAIIgRgEABEGMdi2MseTk5OHDhzs6Osrl8smTJ+fm5hrMCQ4O9tVz584ds5QKYMBiu5djjInwNmAhVq5cmZSUtGrVqldeeUWtVqempt6+ffvixYscx/ETNBpNt27dtmzZEhgYyI9ERETY29ubr2SAFpbbvQy6jFu3btnY2Hz00Uf6gzU1Nfqbd+/eJaLbt2+LWxrA37Dk7sVJfRdy9OhRxtjbb7+tP+jo6EhEe/fuvXDhAhE9evSIiFxdXW/dulVRUWGWOgGMWXL3Ika7kMLCQnd39549exr/aP369YcPHyai4uJijuP8/f1feukld3f3mJiYhoYG0SsFMGTJ3WsrwnuA5ZDJZG2O5+Tk8H+YMmVKTk7OwIEDZTLZhQsXXnvtNV9f37Vr14pYI0DbLLZ7cTTahXh6ehYXF6vV6nbmcBwXGBjI9+vo0aOnTJly7NgxsQoEeCJL7l7EaBeiVCq1Wm1qamrH/0ptbW2PHj1MVxJAB1ly98ref/99Ed5GMmpqak6ePJmRkfHw4cM+ffoYr6UoLS09cuRIdna2vb29q6urWYo0UFZWFh8fHxER4e3tffPmzeTk5P79+3t6enIcd/78+WvXrgUEBLz33ntlZWWDBw9+9913d+zYERgY6Ojo+M0332zcuHHNmjXDhg0z9y8BnQDdayoirwywat9++61CoXBxcQkJCVEoFB4eHhkZGfoTVCqVk5NTWFhYWFiYTCZbs2aNuUrVyczM9Pb2JqLo6GjGWH19/dKlS52dnfn/+wqFIjExkTE2bdq0pKQkxlhWVlZ4eLiNjQ0Rubm5bdmyxcy/AHQSdK/pIEY76urVq3Z2dvHx8RqNhjHW3Ny8fv16/UbUaDTDhw8/c+YMv5mSksJx3IMHD8xTLmOMsdTUVP6kJiQkpLCwUDeu0WiKiopKSkqe9Berqqp+++23xsZGUcoEk0P3mhRitKMWLFjQu3dvtVrdzhytVqv7c0ZGBhHl5OSYvrQ21NfXL168mN9px8XFNTQ0mKUMsBDoXpNCjHbU4MGD586dazx+48aNwMDAX3/9VTdSXl5+5cqV0aNHR0VF6bemaO7fvz9y5Egi6tat29dffy1+AWBp0L0mhXWjHVVeXu7p6Wk87uzsrFQqXVxc+E2NRvPcc88Rkaen548//qj7tq9ozp49O3PmzEePHvXr1+/AgQMvvviiyAWABUL3mpa5c9xq+Pr6xsbGdnByeXn5kiVL5HK5yFeXUlJS7OzsiGjcuHHFxcVivjVYMnSvSSFGO2ry5MnBwcEdn19XV2djY7Njxw7TlaSvurp6xowZRMRxXEJCQlNTkzjvC1YB3WtSWH7fUXPnzs3Kyjp06JDxj/jPBIno0KFDGo2GHywpKdFqtd27d29ubq6vrzdpbQUFBaNGjdq3b5+zs/P+/fsTExOf9LU56JrQvaYlQlQvXMj++U+m/yHhp58y40VptbXsiy/Ya6+xy5dFKKqjGhsbV6xYsWfPHq1WO3v2bAcHh/nz5yclJa1bty40NPTgwYNXrlwhol9++aW6utrPzy8sLGzr1q1JSUmDBg0aMGBATU3NwYMHe/bsGRcXd+3aNVNUeOjQIblcTkQBAQHXr183xVt0ZehedO/fEiNGhwxhRGzt2r9G5s9n//hHqzm7djFXVzZsGOM4duCACEV1SHFx8bhx44jIxcWloqJCq9UeOHBg3rx5UVFRMTEx27Ztq6ysLCsr27lzZ2lpKWOssrJy3bp1EydOnDBhwurVq8vKyhhjS5cu1e20IiIiVCpV++tOOq6pqWnt2rX8YuNZs2YZ3HsROgW6F937t0SK0QkTmIMDu3GjZcS4EXNz2Z07jDFmY2MpjZiVldW/f38i6tWr16lTp4S8VG5ubkJCgkKh4NtRLpfHxcVlZ2cLeU21Wh0VFUVEtra2mzZtEvJS0A50L7r3b4kUo598wiZNYpGRjF+IpmvE7GyWmdlqskEj5uWxS5dEqNHQnj17unfvTkRjxozprM8r1Wr1vn37lEqlbvceHByckpJSW1v7bC+4YMECd3f3EydOdEp50CZ0Lw/d2w7xYjQ/nzk4MJWKMb1GnDWLjR3barJBI8bEMCIWGMgSE1lZmQjFsvr6+tjYWL5RDL5BcebMmY0bNwp/i8zMzLi4OCcnJ/5dXF1ddb1eXV195MiRvXv3Hj9+vL6+vp0XOX369A8//HBDd4wEpoHuNYDuNSZejDLGVq9mHh6souKvRiwpYQ8ftpps0IirVzN3d0bEiJiTE4uNZb/8YsJS7927FxoaSkTdunXbtWuX/o82bdpka2vLcdzZs2c75b2qqqpSUlJGjBgREhLCj6hUKrlc7uTkNHToUCcnJy8vr0yDo50/qVQq/vEJnVUMPAm6t03oXn2ixmhdHXvhBbZsWRtXl3SMry41NLB9+5hSyTiupSP53Xt5eSfXefr06V69ehGRn5+f/ueSdXV18+bNI5MtaquoqGCM/fzzzzKZbNmyZfzNIzQazerVq8+fP288//Hjx7169dqwYYOUGtFioXvbh+5lIscoY+zwYWZvz8aMeYpG1MnLY8uXMze3lnZ85ZW0hQsXPmmP91S0Wq1utdqECRPKW/f46dOnZTKZi4vL999/L/y9nmT27Nne3t58F7Zv7ty5ERERJSUlUmpEi4Xu7Ygu3r1ixyhj7PXXGVFLIx4+zL79ttVkXSNevcpUKma8uKK+nu3dyyIj2aBBIfqXuquqqp6tvKqqqmnTpul2183NzcZzvvrqq7y8vGd7/Q7y8fFZuHCh8Xhubu6wYcN0V5HS09MdHByuX79eWloqpUa0WOjejuji3WuGGC0qYo6OLY24YAGbNIkxxvLymELBFIqWq0gKBXv1VUbE5HIWF8faXFxx8+bNhIQEd3d3vh2dnZ3j4uKeYffOP5ZAoVCkp6frBpubm0V+2rWLi8ta/dWJfyoqKlq0aNG9e/cYYzU1NT4+Pvw0iTWixUL3dkQX714xYjQ31/BKfH4+u3Wr1YhazTIzW/23fTsLDm45A+I4FhnJ2tyhqtVqlUoVERGhW4cREhJy4CkX761bt06/7crKysaPH+/h4XH//v2neh0hnn/++SVLlrQ/Jz4+fsCAAfz6Z4k1osVC93ZEF+9eS781SWYmi4tjzs6se/e/uSrP797d3NyIaPPmzc/8jleuXNGtW74k4qq/cePGjTVYPtPa7du3bWxsfH19lUqlUqmMjIzk/9WZ9JoXCIHu1ZF291p6jPKqqpj+FzGSk5P5K0p1dXUGM9VqdVpaWtmzLtJLS0vjn1sQHBys/9wCEXz55ZdEpHuKg7Hy8vJ9enbs2EFEH3zwQUFBgZh1wtNC9zKpd691xKiB8PBw/gzIzc1t+fLlT7p8npeXt3jx4rFjx0ZGRi5fvvz33383mHDp0qV58+ZFRETMnj07IyMjNzeX/7jzzTffbH/xsCk0NTVNmjTJ0dFx0aJF27dv//jjj0NDQ0+dOnX58mUiysrKMpgvsdMiU0tMTLx69aq5q2AM3csYk1z3WmWMVlVVbd++ffjw4Xw7chx32ei+OidOnOjevfuYMWM++eSTzz77bOzYsX379tX/4tqRI0ccHBzi4+PT0tIWLFjAcdyZM2c2bNiwc+dOcX+bvzQ1NaWmps6cOVOpVM6ZM+fzzz+vrKwsLS1NTk7mbx6hr6qqavr06dZ7UxwxXbx4keM4Gxub6OjoR48embcYdC+TXPdaZYzq8N9LGzZsmMFDYxobG728vJRKpW79h1ar1X/gDGMsIyNj9+7dus3g4OA2H1YDElBRUZGQkODg4EBETk5Oa9euFf94zRi6VzI4xhhZOcaYwUNjzp8/Hx4efurUKf5GYfry8vI4jhs4cKDB+PTp02tra9PT001bq9SJ//SeZ3P8+HH9u2yYUZfqXq1W29DQwN82RUqkcPd743+6+fn5RDRkyBDjycuWLUtISDAYbG5uvnz58ogRI0xUoUDV1dUrVqxYuHChuQuBzifh7n3w4MHJkyeLi4v5za1bt/bo0ePDDz80b1UmYeajYdPYtm0bEbV54lZYWFhUVGQwuHnzZhcXF7NfNXsSjUZjZ2cnk8ks/4Hdlkn/pF4ulycmJlrCSf2TSKZ7Z82aRURpaWn8pkqlIqIZM2aYtypTkMLRqDH+yyH37983/pG3t7eXl5f+yHfffbdq1ardu3d7eHiIVN9TsrOz8/Lyam5uvnv3rrlrsUo3btz49NNPGxsbo6Oj8/LydJFqmSTTvX5+fkR069YtfnPAgAH6m1IizRgdOXKkjY3NwYMH25/GGNu4cWNMTMzOnTunTp0qTm3Phu/IgoICcxdilUaNGrV+/fqsrKzU1FQLjBsDkulePjd1TWuwKSnmPhw2lTlz5ri6uv7000/8Zk1NDf+ljvT09KNHjzLGqqurp0+f7unpqZtjyd555x0S9v0WsCLS6N4LFy4QUWhoqG7E1dWViCzw+oNAko3RqqqqN954g4g8PT2HDh3ao0ePl19+mTE2ceLEqVOnMsb4Hbibm9sLfwoKCjJ31U+0ZcsWInrrrbfMXQiIQRrdy98NT6FQ6EbCwsKI6Ny5c2asyhSksOCpHXfv3s3OzpbJZD4+PoMHD9b/UX5+fnV1tf6ITCYLCgoSt8COSk9Pnzhx4quvvnrs2DFz1wIikUD3yuXyP/744/Hjx/xxaHR0tEql2rVr1/z5881dWmeyNXcBpuXj4+Pj49Pmj/z9/UUuRggpX1eCJ5BA9/r5+WVlZRUUFPAxKtVL/NL8iEl6fHx87OzsioqKGhoazF0LQEcZfDov1Q/rEaPWwdbW1svLS6vVYs0TWBGDsyipHo1K/KReSqaGhtrJ5TZFRRQQYO5aADrEYOnoIH//K5GRfZqbzVpU50OMWo0Nbm70n//Q9es0fry5awHokNcDAhp8fOwKC/lNZ7l8eE4OlZVRcTFZ/ALejsNJvfXw8yMiktx1JZCwnj4+9nfvctev/zU0YAARkbTO6xGj1oOPUWn1H0icuzspFFRZSWVlLSNSbGPEqPXgd+M4GgXr4utLpJebUmxjxKj18PEhOzsqKiKseQIrYnD4iaNRMCdbW/L2Jq2WsOYJrIjB4SeORsHMpLgnB4kzaFrdR0wS+ho6YtSqSHFPDhJn0LRyObm5UU0N/XlXfAlAjFoVrHkCq2O8wklyJ1VYfm9VcDQKVsfNjRQKqqigx4/JzY2IKDKSnnuO7O3NXVmnkfiN8qSmtpYePqT+/ckW+z+wHhs2ULduFBNDPXuauxSTQIxalaNHaf9+unePnJ0pPJxiY8nJqY1p+fmUnEw3bpCTE40fT7GxohcKYES63Ytro9Zj2TKaOpU4jqZMoYAA2rqVgoPp0SPDaRkZFBRE2dkUFUUjR9LDh+aoFaA1SXcvjkatxIkTFBVF//sfvf56y0hlJQ0dSuHhtHfvX9O0WvL3p6Ag+u9/yegB6ADmIfXuxdGolUhNpaCgv7qQiORy+ve/af9+qqujkhLi7/5w+TLdvk0rV1pXF4LESb17EaNWIjeXhgwxHAwKIo2GCgroq68oMpKIKCeHOI4KC0mppP79acIEys4Wv1iAVqTevYhRK6FWt/EpJz9SV0f/+hcdPUpEVFNDjNEXX1BsLO3cSU1NpFRSZaXY1QLok3r3Yt2MlXB3p99/Nxy8f5+IyMODPD3J05OIyNWVbGzo+PGWRXmBgdS7Nx07RjNnilsugB6pdy+ORq1EeDidO0c1Na0G09Opb1/Sf3hkv36k1dKdOy2btrbEcaTRiFcngDGpdy9i1Eq8+SZpNLRyJTU2toycOEG7d1NCAnEc/for7dtHRDRyJHl4UGIiabVERBs2kK0tjR1rrqoBiLpA9zKwFqdOsd69masri4xk/v7Mzo69+y7Tahlj7MMPmZtby7T0dObszPr0Yf36MXt7tmOHGUsGaCHp7sW6UauiVtO5c1RURC4uNHo09e3bMt7cTE1N5ODQsllWRhkZ1NxMY8ZQ797mKhagFel2L2IUAEAQXBsFABAEMQoAIAhiFABAEMQoAIAgiFEAAEEQowAAgiBGAQAEQYwCAAiCGAUAEAQxCgAgCGIUAEAQxCgAgCCIUQAAQRCjAACCIEYBAARBjAIACIIYBQAQBDEKACAIYhQAQBDEKACAIIhRAABBEKMAAIIgRgEABEGMAgAIghgFABAEMQoAIAhiFABAEMQoAIAgiFEAAEEQowAAgiBGAQAEQYwCAAiCGAUAEAQxCgAgCGIUAEAQxCgAgCCIUQAAQRCjAACCIEYBAARBjAIACIIYBQAQ5P+G3Dfaaq/oWQAAAfl6VFh0cmRraXRSZWFjdGlvblBLTCByZGtpdCAyMDIzLjA5LjYAAHic3VPRTtswFI2TNu06YAUmSANCNC9DgofyhngrHWg8wMbgYa9eYhqjxAbHRlQIiR/iF/gUPgF+YU7j1SGsAQnxwCzdJPee45uja5+H25u75hfDsAy9gIp0pfVpiT9IXpp/yvFsGVUZ16DmhGnBBK2afHU5jbskWFo0J/9mMrC/L+K2W1ObF40pBe4mXUZjyLHfdsEIXXWA/WvY1QKtuqIeDU5R2723NMl8CcmyN1aGpIK8suxxN3ukq6Hq33pUEJ5XPKOQ7YvTCPuYf0V9huRea8RoKsYOZTGMeiFkfYkbhlZasbNJgnKp48SNk6BFFuVbuZ9X69mYiqf4ciX1V4xJM54fk/3RAM5E64NMtygJvrMAsbY7oRnALIVNq1lEczfPqpSi1TJ0vqK+52aka2bfv3Oc4ZWovIFz9IH+B87JxmS+gXOeH9P7cY5jFmFTw9o6n6VtXBlLcvNlY1kuTySoF2IGI8wH3uaydwyjBHlrI3CbhJD4KDjkiCH6hAGVT/Yg90OU9Cg5EX3IUfCvXgcCscHwoehPSAz5giWYkh80SfDvCKUMzoTuQvCZwMeDYj2GF7me651OJ4f8zLqeozEUIuKjkCEYZIjXuGosyCnNy/gD0K5sp97XZhoAAABselRYdFJlYWN0aW9uU21hcnRzIHJka2l0IDIwMjMuMDkuNgAAeJyLVjZXS7QyjLWKTrYyApPGsbrRzmoehmouxmraBlYmsRogvouhmoexlWmspm60P1jSECRpFmtnF43LBAMcJtiCTDCAmwAAJiEfRacvQ0AAAAAASUVORK5CYII=",
"text/plain": [
"<rdkit.Chem.rdChemReactions.ChemicalReaction at 0x7871357b7290>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rxn.generate_reaction_template(radius=1)\n",
"rxn.retro_template\n",
"rdChemReactions.ReactionFromSmarts(rxn.retro_template.smarts)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "0bd5dacc-a112-403c-abe6-c1796ea1d9b1",
"metadata": {
"execution": {
"iopub.execute_input": "2026-01-05T10:36:02.923471Z",
"iopub.status.busy": "2026-01-05T10:36:02.923300Z",
"iopub.status.idle": "2026-01-05T10:36:02.946902Z",
"shell.execute_reply": "2026-01-05T10:36:02.946015Z",
"shell.execute_reply.started": "2026-01-05T10:36:02.923457Z"
}
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<rdkit.Chem.rdChemReactions.ChemicalReaction at 0x7871357b6420>"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rxn.generate_reaction_template(radius=2)\n",
"rxn.retro_template\n",
"rdChemReactions.ReactionFromSmarts(rxn.retro_template.smarts)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ab7cfeb0-9278-4978-9a70-d87dfdf0f962",
"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.12.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment