Created
September 12, 2026 05:24
-
-
Save iwatobipen/8d0e3f2437591110dce95657ab638adc to your computer and use it in GitHub Desktop.
This file contains hidden or 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, | |
| "id": "7b489aec-de5a-4d57-ad65-6e556569eb6c", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "from rdkit import Chem\n", | |
| "from rdkit.Chem import AllChem\n", | |
| "from cosmolkit import EmbedParameters, MoleculeBatch\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "id": "464bb0dd-3543-44dc-a932-fc509a87f1c2", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "CPU times: user 3 μs, sys: 0 ns, total: 3 μs\n", | |
| "Wall time: 4.53 μs\n", | |
| "True\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%time\n", | |
| "rdk_sdf = Chem.SDMolSupplier('cdk2.sdf')\n", | |
| "print(\"__getitem__\" in dir(rdk_sdf))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "id": "68be9977-22db-407f-a637-2e9c9d631faa", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAIAAADCEh9HAAAABmJLR0QA/wD/AP+gvaeTAAAe/ElEQVR4nO3deVxU5f4H8M8s7LugoilcQRZFSTBNBeUmoCmoWEZmki1qdsuxaxaVKS1Xb9dXv8Sya2jeXljKKy01wJ0UTUBD3EEQGVBWZd+3mXl+fxwaBFGBmTNnjO/75R/M4cx5vidffXzOeZ7zHBFjDIQQQnpLLHQBhBDyaKMYJYQQjVCMEkKIRihGCSFEIxSjhBCiEYpRQvQIYywtLS01NVXoQkgPSIUugJBHSUsLNm7EqFEICmrb0tyMyEiEhWHw4B4frbm5+caNGxkZGXK5PD09PSMjIysrq66uTiQSxcTEPP/889otnvBERPNGCem+ujpYWMDEBFevwskJAGpqYGWFlBRMmPCgLyoUyMuDXJ5/5cru69evX79+PTMzs6Sk5N49TUxMGhsbhw0bdunSJQsLC37Og2gT9UYJ6TE3N8hkiI+/7w6VlZDLIZcjPR0ZGZDLkZGBxkaMG2ecmrpKvZuhoeGQIUNGjhzp4eHh5OQ0cuRIT09PU1NTHx+fP/744+23396+fbsuzodohnqjhPQA1xv99VcsWIAdO/DMM+290QsXkJqKzExcv47y8s5fFIng4IAJExr69w93d3d3dXV1dXV1cHAQiUT3tpKZmTl27NiGhoY9e/bMmzdPFydGNEAxSkgPcDGalobDh7FlCzIywFhbjH7wARIT23YzMoKzMzw84OSEkSPh4QE3N5ibP+TgKpVKLG4b9f36669lMpmdnd2VK1fs7e15PCWiMYpRQnpAHaMeHvD0RFAQPv64LUYLC1FeDldXuLlh0KCHH6qyslIul6sHl+Ry+Z07d27dusX9ljEWFBR06NChp59++uDBg112WomeoBglpAfUMertjYQEzJiBkyfh4/OQIabmZmRnIyenISNjU1ZWVmZm5vXr1ysrKzvtJhaLy8rKbGxsuI9FRUWjR4+uqKjYtm3b4sWL+TspoiGKUUJ64O4YBTB/PoqLcepUhxitrGwfWeJGmbKyoFTC1BRNTQYqlYLbzdra2tnZ2cnJiRtc8vDwcHd3NzMzu7u5vXv3Pvvss2ZmZhcuXHBxcdHpqZJuoxglpAc6xWhJCdzdUV2NlBQ4OWHmTGRloa6u87ekUgwbBnd3eHpucHS0cXNzc3d3HzBgQHdaXLBgQUxMzKRJk06dOiWRSLR9QkQLKEYJ6YFOMQrgyy/xzjtIScG4cTA3R1MTbGzg5NQ+uMT9YGLSyxYrKys9PT0LCgo2bdovk83R1okQLaIYJaQHGENVFSwtoe4XqlSoroaFBaRSXLwIBwf066flRo8dS1i3zv7MmVEpKfDy0vLBiebomXpCekAkgo0NJBIEBsLVFdeuQSyGjQ2kUgAYM0b7GQogMDDg8cdHNTfjxRfR2Kj94xMNUYwS0htyObKzYWCgo+b+8x+MGoVr17B6tY5aJN1HMUpIb1RVAYC1tY6aMzbGjh0wNMSmTTh+XEeNkm6iGCWkxxhDTQ0AWFnprlEvL3z0EVQqvPQS7plySoREMUpIj9XVQaGAmZnuLuo5H3yACRNQWIgVK3TaLnkwilFCekzHV/RqUil27oSFBX74AT/9pOvWyf1QjBLSY0LFKAAnJ2zYAADLlqGgQIACyL0oRgnpMQFjFMCyZQgKQlUVXn0VNO1bH1CMEtJjwsYogG3b0L8/PDygUAhWA1GjGCWkxwSP0UGDkJWFNWtw8iRu327fXlGBhAQwhsZGHDuG+voO30pMRHGxjivtEyhGCemx6mpAt7Od7mVjgwsXEBiIsLD2jefPIzAQjKG4GNOmIS+vw1fmzkVCgm6r7BsoRgnpMcF7o2piMS5fRkyM0HX0bRSjhPRCqbt7o52d8M+3i8WIiMDKlW3JTgRBMUpIj928+WFmpqmZ2Q9CFwIAS5di4EB8+GEXv7p2DefPt/9RKnVeXN9AL1gmpMeqqqoAWOvDVT0gkeCbb+Dnh5df7vyr5cvblp7i3LueNNEK6o0S0mN6FaMAfHwQFoY33oBK1WF7QgLy89v/CDsm9hdGMUpIj1VXVwOw0qdY2rABeXnYuVPoOvokilFCekzfeqMA+vfH+vX48Ueh6+iTKEYJ6TE9jFEAS5Zg/Hihi+iTaIiJkB7jLuoFjNE7d2BkhNGjO8wYFYuxaxfOnYNIBHt77NsHB4cO39q5E6NH67jSPoFeaUdIzzQ0NJiZmRkbGzcK9F6k5mY89RQqKnDgAJydBSmBdEAX9YKp7/TAM3lECH5F/9ZbSElBUxMsLIQqgXRAF/XCUKlU48ePLyws9Pf3nzx5so+Pj5eXl1RKfx2PAGFjdONGfPcdTEzwyy8YMECQEkhn9P+tMD799NOMjAwAe/fu3bt3LwBTU1MvLy9fX18fHx9fX18bGxuhayRdEzBGExLw3nsQifD99xg7Vvftk65RjApAqVTu3r0bwIIFC0JCQk6fPp2UlHT+/PmkpKSkpCQAEonEzc2Ni1Q/Pz9HR0ehSybtbt++DUD3gwq5uXjhBSgUiIjA88/ruHHyIDTEJICtW7e+/vrrLi4u6enpBn++FK20tDQ5Ofn3339PSkpKS0trbW3ltpsbGlY7O4vHjYOvL3x8MGIERKIHHZ0xHD2KlBS0tsLFBXPn0sMrWlRcXDx9+vSqqqr8/Hxvb+8VK1YsWLBAB3djamsxaRKuXkVICH75BWIa1NAnFKO61tjY6OrqWlBQ8NNPP4WGhna5T0NDQ2pqKhepbpWVkWfPtv/O0hLjx8PHB76+8PWFsXGHb9bUYNYsXL2K6dNhaYlTp1BWhrg4PPkkn+fUV1y6dCk4OLigoGDAgAEKhaKiogKAs7PzP//5z1deecXU1JSndlUqhIQgLg4jRuDMGVha8tQO6S1GdGvdunUAnnjiCZVK1a0vKBTs6lUWFcXCwtiwYQxo/2NgwMaOZTIZ272blZUxxtjSpczRkeXnt323uZmFhrKhQ1lTE1/n02ccPnzY0tISwKRJk+7cudPU1BQdHe3u7s79f2RlZSWTyQoKCvho+v33GcD69WM3bvBxeKIpilGdqqio4MaOEhISenmIvDz244/sjTfYqFFMLG6PVA8P1tTETEzYf//bYf/8fCYWs/37NS++L4uKiuKu3J9//vnGxkb1dqVSGRsb6+Pjw4WpoaFhWFhYenq6Fpv+6acGkYgZGLDjx7V4VKJNFKM69c477wCYPn26dg5XUcHi49kHH7DJk5lMxi5fZgA7e7bzbkOGsE8+0U6LfY9CoZDJZABEIlFERMT9riHOnTsXFhYmkUi4PQMCAmJjYzVv/fz58wMGDHzyyf3ffKP5wQhfKEZ1p6CgwMTERCQSpaWl8dLAmTMMYFlZnbePGsXee4+XFv/qamtrZ82aBcDIyOiHH35Qb9+2bVtJScm9++fk5MhkMvVNUm9v7+jo6NbW1t61XlJSMnToUABLl77eyxMgOkExqjsvv/wygAULFvDVQE4OA9iJE52329iwL77gq1Gtq6tjly6xK1cEv59bWFjo7e0NwNbW9uTJk9xGhULx5ptvApg4caJCoejyi3fu3Pn8888HDRrEhemwYcMiIyPr6up61HpLS8uUKVO4W7FNQv+nIA9GMaoj165dk0qlBgYGN/gbJlCp2GOPsVWrOmw8fZoB7I8/+GpUi5qb2fLlzMiIWVoyMzNmZsbWrmVKpSC1XLx4kesJDh8+POvPDn5tbW1wcPC9ndMuaTgGtWTJEgAODg63b9/W6EwI/yhGdYS7Nly+fDm/zWzezExN2S+/tH3MzmajRrFp0/htVFsWL2aDB7MTJ5hKxRQKtm8fs7Jia9fqvpCDBw9aWFgA8PX1LS0t5TYWFBR4eXl16pw+VO/GoDZt2gTAxMQkNTVVozMhOkExqgu///47AHNz8y5vqGmTSsXWr2empszWljk7M5GIzZ3LKir4bVQrbt1iYjHbtavDxg0bmJkZq63VZSGRkZFisRjAK6+80tzczG28ePHikCFDALi4uGTde/e5G7o/BpWQkCCVSkUiUUxMTO9Pg+gQxagucJ2RiIgIHbVXV8eSktiJE6ywsG2LSsWqq3XUeu/ExDCAdbqBmJ3NAJaYqJsS1Pc9uUF59fa9e/dyo0b+/v6VlZWaNNFpDMrLy6vTGFRubq6dnR2Ajz76SJOGiC5RjPJu//79APr3718tVJAVFbGAADZtGuvmhH9BfPUVs7LqvLGhgQFs924dtF9TUxMUFMTd99y5c6d6u7pz+uqrr7a0tGilrdLS0i7HoGpra0eNGgVgzpw5SoFuCpNeoBjll0Kh8PDwAPDVV18JVsTt22zgQAawTZsEq+GhvvuOSSSs09ygwkIGsIMHWVoai4/nb+w+Pz9/zJgxAOzs7H7//XduY2tr6z/+8Y97O6fa0tDQsGXLFhcXFy5MbW1tR4wYAcDd3b2qqkrrzRH+UIzya/v27QD+9re/CTxnZf9+BjAjI3b5spBlPMAffzCAnTvXYWNsLBOJWEEBW7iQAczUlAUHs+ho7d4tPXPmzMCBAwF4eHjk5uZyG2tqambOnAnA2Nh4V6c7tlrFjUEFBAQAGDRokLm5eXZ2Nn/NET5QjPKosbHRwcEBwN0XiYJ57TWFvf3GZ59VD5voF5WKeXqyGTPau5w1NWzcODZzJmOMbdrEvL3bn3w1M2PPPcdiYlhNjYbN/vzzz9ydyoCAAPV9T7lcPnLkSK5zevr0aQ2b6Kbo6GgAjo6OummOaBHFKI82bNgAwNPTUy/uc9XW+nt5AQgPDxe6lPu4coUNGsQ8PNiqVWzFCubkxFxd2a1b7Tvk5bHISObjw0Sitjw1NmbBwSwqivVqcqX6vufixYvV9z3VndNRo0apO6c6oFAouKVPiouLddYo0QqKUb5UVlba2toCOHz4sNC1tElOTpZIJGKx+MS9TzoJKCKi/Vq+upr997/szTfZ8uXs++/ZXYuAdJCfzzZtYn5+TCJRL3YlX7Jk69atd+7c6U6bra2ty5Ytu/e+588//2xiYgIgMDBQNzcoW1pa1DVPnToVwH5aR+ZRQzHKl/DwcAB+fn5CF9LB6tWrAYwcOVKwaQN3U6nY8uUMYPb2rL6+N0coK2PR0Sw4mBkafjFhAgCxWOzj4xMZGfmA54UqKiqeeuopAGZmZvv27VNv77Jzyqt9+/YZGxu/8MIL3Efub+f999/XQdNEiyhGeVFYWGhqaioSiVJSUoSupV11dTU3LiyRSI4cOSJwNSoVe/NNBjBDQ3ZXlvVSeflP0dFBQUFGRkbcwDeXp19++WVeXt7dO+bk5HAD4oMGDVI/I3S/zinfLl++zE144j7Gx8fr4T+95KEoRnmxePFiAKGhoUIX0u7GjRvcsIlUKv3iiy8YY7du3Xrog+F8USjYokVtg+9aDfT6+vrY2NiwsDBzc3P12uQjR46MiIi4du1acnLygAEDAIwePfrmzZvcV+7unOr4glqpVFpZWanvh5aVlYlEIlNT014vCkUEQTGqfZmZmVKpVCqVXrt2Teha2pw8ebJ///7csIlcLldv527/qVSqq1ev6q6alhY2b17bgPtvv/HUSF1d3Z49e+bPn29x19vcub5qUFBQzZ9D/Dk5OdzqIXd3TnWJm+qkvrfg6uoKgK+lFAk/KEa1b/To0QDeeOMNoQtpExUVxb04b+bMmV0Om2RkZEzT2fIlzc0sJIQBzNqaJSfroMHGxsbY2NilS5daWlra2dlNmjRJvcBdl51THVuzZg2A9/5cEHbRokUANm/eLEgxpHcoRrXs6NGjXMdH+JuPjLW2tr711ltcPTKZ7KHzrmpqasaMGVPL31Ig9fVs2jQGMBubLlbp5xk3MXP27NnqLdOnT+c6pzye8sMcOHAAwOTJk7mPW7ZsAfDiiy8KVQ/pBYpRLfv++++5VXwsLS2//fZbAWeMlpWVcbf8jI2No6Oju/OV9PT0NWvWcD9v3rxZyx20ujrm788ANnAgu3RJm0funuvXrwOwt7dXbykvL//ss8/ut/qyblRUVIhEIhMTE+6xiIsXLwJwdnYWsCTSUxSj2peQkMAN5gDw9vY+c+aM7mu4fPnysGHDAAwePPhsz/t92dnZdnZ2FRUVjDG5XN7TldvvVVlZWTN1KgPYkCEsM1PDo/WOSqXiZvLmq9+cqh/c3NwAcHdm1ZPweV9TkWiPGETb/P3909PTY2NjHRwczp8/P2nSpJdeeqm8vFxnBRw4cMDX1zc3N5cL8fHjx/f0CGKxeOvWrdxLTMPCwuLi4jSpp7Kycvr06U+XltaNGIHERLi5aXK0XhOJRNxLQVJTUwUp4H4mTpwIICUlBYBEIgkOfnfKlD3nz9P/m48OoXP8r6y+vj4iIsLQ0BCAra1tVFRUd99N31sqlerzzz/n5pDPnz+/oaFBwwMeOnTIw8ODuzWxZcuWXsypLCkp4cbcXFxcCu5+slMI3Pz2Dz74QNgyOomKisJdL+lavZoBjObgP0IoRnmXmZnJTWoBMGXKlCtXrvDUUGNj48KFC6HVOeRVVVVcwY2NjUOHDuXuDxQXF3/55Zfd+XpxcTG3TqC7u3uheg1p4XBrvwYEBAhdSAeXLl0aONArOHgL9zEujgGM5uA/QihGdUGlUkVHR3MLXkilUplMVqPx0kSdFBQUjBs3DoCFhQUfc8j/97//hYSEcD/LZLKVK1dyPz/gX4WbN28OHz4cwJgxY7r5qDvfioqKAFhZWenFYjF/UiqZlRUDGLcmSVkZE4mYqWnnxVeJ3qIY1Z3KykqZTMaN4w8ePLibo+fdkZycbG9vD8DZ2ZmnifRKpZJbR66wsNDOzo4bADl79qyDg0OXj5/L5XJujGvs2LFlZWV8lNQ7jz32GIBMgYa57icggAHtz8S6uDCA0Rz8RwXdxtYda2vrTZs2paamTpgwoaioaNGiRf7+/pmZmRoedteuXf7+/iUlJVOmTElJSeEuorVOLBZbW1sDOHTo0JIlS7ie9dq1a1evXm1gYKBUKidNmnTz5k1u58zMzMmTJ+fm5vr6+h4/fpwbH9cTXJ9d30aZJkwAgJSUto8TJ3b4SPSd0DneFymVyujoaO7NZYaGhuHh4Y33WxHugRQKBbeOFIClS5fqZlEitaSkJEdHR262444dO3x8fLjt6enp3FuG/Pz8tH7vQnPr1q0DIJPJhC6kgwMHGMCmTGn7uGULA9jChYLWRLqNYlQw5eXlMpmMG1V3dnY+cOBAj75eU1Mza9YsAFKp9Ouvv+apyAfYuXMn9wZghULh5ubGrWGalpbG9T1nzJih+TwBPhw7dgzAxIkThS6kg4oKJhIxExPG/VN48SIDGM3Bf1RQjArs1KlT3HwgAMHBwZ1Wdbuf7OxsbrU3W1vb48eP813kg23fvt3f35/7ef369QDmzp2rp68qYayysvbJJ4scHVt123d/ODe39pdRKRTM0pIBjObgPxIoRoXX2toaGRnJPbtiamoaERHx4Aw6cuQINzF+9OjRdy/XJJTDhw+fu+tVdDExMXq+zpurqz4O4Lz8MgOY+rqCe+br118FrYl0D8WovigsLAwLC+O6pa6urkePHu1yN/VyTUFBQXqxgv0j6MUXGcC+/VboOjr69lsGsD/n4LMPP6RJ+I8MGqnXF4MHD96xY8fx48dHjBhx/fr1adOmhYaG3r59W71DS0vLa6+99vrrr3MjS7GxsVwHlvTUuHEAoGdj9Z1H52mw/lEidI6TzlpaWiIjI83MzABYW1tHRkYqFIrCwkI/Pz8AxsbGgi1Z/1eRnMwA5ukpdB0dKZVt90O5SfilpeyZZxitO/pIEDHGhE5y0gW5XC6TybjFKE1NTZubm5VK5dChQ/fv38+tr0F6rakJlpZQqVBdDTMzoau5i0wGkQjvvYf6eiQmIjgYgwe3/SorC+fO4cUXBa2P3AfFqF6Li4tbsGBBXV0dABsbm4yMDO5pJaIhb29cuIBTpzB5stCldCU6Gi+/jLlzsXdv25bvv8eaNSgoELQsch90b1SvzZo1KycnZ968eSEhIXl5eZSh2qKft0fvZmuLEyeg2QqFREcoRvXdgAED9uzZs2/fPhpQ0iL9j1ELC3z4IZYvR3290KWQh6EYJX0Rt5K1PscogBUrYGiITz4Rug7yMBSjpC/y8ICZGeRy6PClBD1maIivv0ZkJK5cEboU8kAUo6Qvkkjg5QXGcO6c0KU80PTpmDMHK1YIXQd5IKnQBRAijHXrIJFA3yaPFRV1noO1cSNGjADdGNdn1BslfVFoKBIT4eMDExMAYAyhocJfO+/ZA09PrFrVYeOQIfj4Y/z6q0A1kW6gGCV90Z49+PhjHD/eYQv35O3Vq3B2xooVSEhAa6uO6snNRWAgQkNRXo7bt6FUdvjtihV4/HEdVUJ6gWKU9FEzZuCNN9Dc3Hn74cOQy/HVVwgMhL09Fi7E7t2oruarDMawdSs8PZGQABsbREUhNhZz5iA2tn0fqRSHDuHgQb5qIBqip5hIXyQS4ehRvPkmFi7E2rVgDGIxjh1DQABUKly4gLg4xMcjLa1tf4kEEyZg1iyEhMDNTWtl3LiBxYtx8iQAPPccvvkG/ftr7eBEZyhGSV8kEiExEVVVmD8fly9j+PD2GL1bdjZiYxEfj9OnoVC0bQwKuvT447tnz549btw47uUFvaBQ4P/+DxERaG6GvT2++QbPPKPZKRHhUIySvoiLUT8/BAejtRWHD7fFaP/+EIng6dl5/8pKJCQgLg5xcRgz5sPExH8DsLOzmzFjxqxZs55++mkLC4vut37pEl57DWlpEImwcCEiI9GvnxZPjuicoOtLESIMgCUmMsZYTg4zMWG//soAduwYCwlhAHN0ZEuXsthY1tTU+YstLezEiTMymYx7fTTHxMQkKCgoKiqqsLDwwe02NDSsXv0vOzsl96olod//QrSDYpT0ReoYZYx9+mnbe5COHWNvv83s7RnQ9sfKioWGsh9/ZOXlXRzkypUr69evnzBhgvrSXiQSPfHEEzt37uyy0ZMnT7q4uACYPDlq5UpWX8/b6RHdohglfdHdMdrc3B6jnKtXWUQEGzuWiURteSqRsLFjWUQES0/v4milpaXR0dHPPfccd2l/74ta6+vrw8PDubT18PA4c+YMf6dGdI9ilPRFTk7s7Nn2j0eOMCcndvp0591yc9lXX7HAQGZo2N5FnTfv3+++++6pU6cUCkWn/RsaGuLj44u59ev/dOjQIQcHBwAGBgbh4eFN994pII84GmIi5OEaGvDbb4iPR2wspNJhBQV5APr16+fv7x8cHDxnzhwrK6t7v1VVVRUeHr5161YAY8aM2b59O7254C+JYpSQHlAoWFLSqbi4uNjY2OzsbG6jkZGRn5/f7Nmzg4ODHR0duY1xcXHLli0rKioyMTGJiIhYtWqVRCIRrnDCI4pRQnopKysrNjY2Li4uOTlZ+efzm48//vjUqVOvXr167NgxAH//+9+3bds2fPhwQSsl/KIYJURTFRUVv/32G9dFra6uBmBubi4SiT777LPly5f3eoo+eVRQjBKiNS0tLYmJiYsXL87Pz9+1a9cLL7wgdEVEF+jfSUK0xtDQcNq0aYGBgQCq+VvOhOgZilFCtMzZ2RlATk6O0IUQHaEYJUTLuAElitG+g2KUEC2j3mhfQ0NMhGhZVVWVjY2NqalpXV2dSCQSuhzCO+qNEqJl1tbW/fr1a2houM29loT81VGMEqJ9dF3fp1CMEqJ9NMrUp1CMEqJ91BvtUyhGCdE+itE+hWKUEO1zdnY2MxtYVzdI6EKILtCEJ0K0r6iIPfaYyM4OpaVCl0L4RzFKiPYxBnNzNDSgqgpdLehM/lLoop4Q7ROJwL05VC4XuhTCP4pRQnjBrdRMg0x9AcUoIbxwdgYoRvsGilFCeEEx2ndQjBLCCy5Gb9wQug7CP4pRQnhBvdG+gyY8EcILhQImJlCp0NAAIyOhqyF8ot4oIbyQSuHgAJUKeXlCl0J4RjFKCF/our6PoBglhC9cjObmCl0H4RndGyWELyUlkEjQv7/QdRCeUW+UEO07dAjOzoiPb8/Qgwfh7Q0A585h2DDU1rbv3NSEYcOQnCxAnUQrKEYJ0b66Oty8iXffRUlJ+xZurKmpCXl5UCrbd+aGoRobdV8m0Q6KUUJ4YWsLX1+sXCl0HYR/FKOE8GXjRuzdi4MHha6D8EwqdAGE/GUNHw6ZDCtWYOrUzr966ilIJG0/q1Q6rotoGcUoITxauxYxMdiwAe7uHbavXg0zs7afm5sxd67uSyNaQzFKCI/MzbFxIxYtwmefddgeEABr67afGxp0XxfRJro3Sgi/5s3D5MnYsEHoOghvKEYJ4d3mzaiu7taeKSkICEBgIP71L55rItpDMUqI9g0ciClT2j8OH47//Ad+fgDQrx9mzICBQftvJRLMmAE7OwA4dw47duDIERw8iIwM3RZNeoseBiVEH82ejU8/xZgxQtdBuoF6o4TonTNnUFUFT0+h6yDdQyP1hOiXc+ewciX27IGYOjmPCPqLIkSPfPcdwsLw8ccoKUF5udDVkO6h3igheqSsDHPm4PhxAJg3D7a2QhdEuoGGmAghRCN0UU8IIRqhGCWEEI1QjBJCiEYoRgkhRCMUo4QQohGKUUII0cj/Ay8bdjZIwGfKAAABpHpUWHRyZGtpdFBLTCByZGtpdCAyMDI2LjAzLjYAAHice79v7T0GIBAAYmYGCBAEYmEgbmBkc8gAiTMzsjtYgBiMzGwOGiAGC4xmh9DMhPjsDGCTGJk4GMACTGwMCUCaCUibAGlGRhaEACrNwaAAorkZWDKYGBgTGJkSmDgymJiYE5hZEphZM5hY2RJYuRTY2DOY2DkS2DkVuLgZeLhZmHgEGHh4GXj5GPj4GfgFGJxAnmNlYGFmYmRjY+dgYmZl5eUR4OcTvwayHYoZBG/a+jr07JR2uBamY7ftc61DMOtq+1nlc2y6/7o6ONl12D2XXb67O+e5/dZlkfa7d/DarQj/ZH/gDZ9DnkmD3Yssa/tdnj17Nd/y2p2TbLSfkbdp/+bqIpvkekEHr+rH+7/uvLWXb1+EQ+ydtv1iv7n3HXGSdXDJdD/QtSFx39MLQvuztbfZfWjttDuWe2a/eafifnfmCrt17rYHdsi12krP22cXt6v5QFpH8v6fC9TtkxauOrDPQHIf0C220ydMP2A7u9S+Uc1pv9GzsANH/ynZh/HF7hcDAKeVdG/LY2dAAAAB8npUWHRNT0wgcmRraXQgMjAyNi4wMy42AAB4nH2US27bMBCG9z4FL2BinnwsuojlJAiKSEDrdtEbdN/7IzOkZJGbCjZAjr55/9Cfj3UBLiii9RL8+XH//vdfeD58v5gd/vOrtYbfDACXz+CHcHt9/1jD8ni5HZZl+7U+fgbMAav5QMCZfXlsn4cFwxI4EqQKECgKM9kBIqbCfjg4CqtxNRXLHDAyJ2wcYMWR4xYPKqf2mlLjrgaCTqAYiLFACwixKOyJucjIqSU2rjK3AukokBQmLlk8iJnpyJcs5B4wjWBuAQGa9WqtVIG9FSkjWCyiJcwsHcw5U4+NkCaytuFYnj0kaGvfSU55JBEMtTFrD8URUUtHieaGEMPmds3cG2FtqA917gjJKrW0WvPefGLsPZEQTajv50qxau5BIWknOVNbeFje3r/Rk/c1XcXKdM5DF3uaQ9J5XKiOqkmDjjFJ7SpAZJjQ1KNmTq1lK6dK98k6r99EvPmcWPOetk/UK0l9MAf6ut4naXex37b1fopd7K+npv1Kp3TFTHwKVMxUTx36VU65+Xs9ReXXdErHLiGf+kC7Ig4qEHMpw6rFfOqwULQ7jmtDp3BcDDYztYXxsIVuz8Owu0WGmWIL8Cwfi1vM9dkBes3umsfxjsP0+/HVsfPlCz4O6AIuKH9oAAABFHpUWHRTTUlMRVMgcmRraXQgMjAyNi4wMy42AAB4nCWQO24DMQxEr5LSBrQEPyIlRY2BTeEqPoDhanu3aXz4DLVqBD6OqOH8HvI+Lo/9ud9u95fu+/7Q66Hv4/m+v3DL1+eiVL1p2YxEvJeNSZXrVNJmtWxCrWWbSTj6FGLukdhGLUwstU+mZiqpgcRBxXpMlN4sS3MMxtxIKuSjLXGYJK2qc1Ma3lLLsV40tblVWEIJaccBDsdvm5OZnpbqiPxOlrhZpKXhcIZm814n1jJv661FW6PCHGt0Ttid9fRbkw2zgsUxPo05YjBSjgFYTyjRDXBEL4jAQlYGQ8B4WKwt44yCPSmSWHGxo5uWYeNa/n6+g/zzD+EiVaVLSIUhAAAAAElFTkSuQmCC", | |
| "text/html": [ | |
| "<table><tr><td colspan=\"2\" style=\"text-align: center;\"><image src=\"data:image/png;base64,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\"></td></tr>\n", | |
| "<tr><th style=\"text-align: right\">id</th><td style=\"text-align: left\">ZINC03814459</td></tr>\n", | |
| "<tr><th style=\"text-align: right\">Cluster</th><td style=\"text-align: left\">2</td></tr>\n", | |
| "<tr><th style=\"text-align: right\">MODEL.SOURCE</th><td style=\"text-align: left\">CORINA 3.44 0027 09.01.2008</td></tr>\n", | |
| "<tr><th style=\"text-align: right\">MODEL.CCRATIO</th><td style=\"text-align: left\">1</td></tr>\n", | |
| "<tr><th style=\"text-align: right\">s_st_Chirality_1</th><td style=\"text-align: left\">13_S_17_12_14_24</td></tr>\n", | |
| "<tr><th style=\"text-align: right\">r_mmffld_Potential_Energy-OPLS_2005</th><td style=\"text-align: left\">-67.4705</td></tr>\n", | |
| "<tr><th style=\"text-align: right\">r_mmffld_RMS_Derivative-OPLS_2005</th><td style=\"text-align: left\">9.48919e-05</td></tr>\n", | |
| "<tr><th style=\"text-align: right\">b_mmffld_Minimization_Converged-OPLS_2005</th><td style=\"text-align: left\">1</td></tr></table>" | |
| ], | |
| "text/plain": [ | |
| "<rdkit.Chem.rdchem.Mol at 0x77443dd1ff40>" | |
| ] | |
| }, | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "rdk_sdf[1]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "id": "29ad2856-0252-4b68-a2b6-3cb1dcda6e0e", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "CPU times: user 2 μs, sys: 0 ns, total: 2 μs\n", | |
| "Wall time: 3.34 μs\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%time\n", | |
| "rdk_params = AllChem.ETKDGv3()\n", | |
| "for mol in rdk_sdf:\n", | |
| " hmol = Chem.AddHs(mol)\n", | |
| " AllChem.EmbedMolecule(hmol, rdk_params)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "id": "f97fbc70-4d9a-4328-a0da-e20dfb7b4604", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "CPU times: user 2 μs, sys: 0 ns, total: 2 μs\n", | |
| "Wall time: 3.34 μs\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%time\n", | |
| "cosmol_sdf = MoleculeBatch.read_sdf('cdk2.sdf', sanitize=True, coordinate_dim=\"2d\")\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "id": "9c1483b4-88a2-4e6d-b336-c237595b79ef", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "'Nc1nc(OCC2CCC(=O)N2)c2nc[nH]c2n1'" | |
| ] | |
| }, | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "cosmol_sdf[2].to_smiles()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "id": "782b161a-748b-4d63-af8b-607342142961", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "CPU times: user 1e+03 ns, sys: 0 ns, total: 1e+03 ns\n", | |
| "Wall time: 3.1 μs\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%time\n", | |
| "cos_params = EmbedParameters.etkdg_v3()\n", | |
| "embedded_mols = []\n", | |
| "for cos_mol in cosmol_sdf:\n", | |
| " cos_mol.add_hydrogens_()\n", | |
| " embedded = cos_mol.with_3d_conformer(cos_params)\n", | |
| " embedded_mols.append(embedded)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "id": "b74710ef-1ad8-41e3-a423-24f61ea87028", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "[[ 3.59706665 1.40068263 0.78248951]\n", | |
| " [ 3.47140306 -0.04558058 0.37269855]\n", | |
| " [ 4.68308809 -0.4674032 -0.44992851]\n", | |
| " [ 2.23254933 -0.31278363 -0.38887202]\n", | |
| " [ 2.24338025 -0.75354752 -1.54779306]\n", | |
| " [ 0.92556748 -0.05354304 0.231482 ]\n", | |
| " [-0.15513888 -0.36878027 -0.64474239]\n", | |
| " [-1.48605446 -0.2051096 -0.27621191]\n", | |
| " [-2.45779706 -0.54019887 -1.19959407]\n", | |
| " [-3.7961813 -0.40087554 -0.89524538]\n", | |
| " [-4.50395837 -0.79834283 -1.97020606]\n", | |
| " [-3.64981423 -1.18993867 -2.95841013]\n", | |
| " [-2.40352882 -1.01998748 -2.4556846 ]\n", | |
| " [-4.10839979 0.07204562 0.33106939]\n", | |
| " [-3.16889262 0.40738425 1.25362671]\n", | |
| " [-1.86286314 0.26097808 0.9292148 ]\n", | |
| " [-3.58780367 0.89933761 2.52497328]\n", | |
| " [ 4.03926829 2.02945505 -0.02244835]\n", | |
| " [ 4.26752342 1.51581418 1.66311255]\n", | |
| " [ 2.61733124 1.79962548 1.04621236]\n", | |
| " [ 3.52284248 -0.66331623 1.30878053]\n", | |
| " [ 4.95427624 0.3137165 -1.21311808]\n", | |
| " [ 5.57181257 -0.61607835 0.19222686]\n", | |
| " [ 4.45891888 -1.38565414 -1.03359738]\n", | |
| " [ 0.81027035 0.99746415 0.55485708]\n", | |
| " [ 0.74899844 -0.65104688 1.16159941]\n", | |
| " [-5.55887984 -0.80288003 -2.0302632 ]\n", | |
| " [-3.9328534 -1.56030346 -3.94283118]\n", | |
| " [-3.92655704 1.89017795 2.63040437]\n", | |
| " [-3.54557414 0.24868882 3.33185728]]\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "print(embedded_mols[0].coordinates_3d())" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "id": "905bdd95-34bf-4da6-a2b6-5d113c003b1b", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "from rdkit import DataStructs\n", | |
| "from rdkit.Chem import rdFingerprintGenerator\n", | |
| "from rdkit.Chem import Draw\n", | |
| "\n", | |
| "from cosmolkit import Fingerprint\n", | |
| "from cosmolkit import Molecule" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "id": "84f2e628-365c-4cdf-bef8-064bb0bb362a", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "fp_gen = rdFingerprintGenerator.GetMorganGenerator(radius=2, fpSize=2048)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "id": "c8dc1ec3-2da7-47db-89a0-2ec0e1b9e9b5", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Nc1nc(OCC2CCCO2)c2nc[nH]c2n1\n", | |
| "Nc1nc(OCC2CCC(=O)N2)c2nc[nH]c2n1\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "smi1 = cosmol_sdf[1].to_smiles()\n", | |
| "smi2 = cosmol_sdf[2].to_smiles()\n", | |
| "print(f\"{smi1}\\n{smi2}\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 12, | |
| "id": "09383edc-e3b1-4e65-bdb3-b57da4188338", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "rd_mol1 = Chem.MolFromSmiles(smi1)\n", | |
| "rd_mol2 = Chem.MolFromSmiles(smi2)\n", | |
| "cos_mol1 = Molecule.from_smiles(smi1)\n", | |
| "cos_mol2 = Molecule.from_smiles(smi2)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 13, | |
| "id": "9a396d4a-6f17-486b-a771-2f1e5690b64e", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "def get_tc_from_rdk(m1,m2):\n", | |
| " fp1 = fp_gen.GetFingerprint(m1)\n", | |
| " fp2 = fp_gen.GetFingerprint(m2)\n", | |
| " return DataStructs.TanimotoSimilarity(fp1, fp2)\n", | |
| "\n", | |
| "def get_tc_from_csk(m1,m2):\n", | |
| " fp1 = m1.fingerprint_morgan(radius=2, n_bits=2048)\n", | |
| " fp2 = m2.fingerprint_morgan(radius=2, n_bits=2048)\n", | |
| " return Fingerprint.tanimoto(fp1, fp2)\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 14, | |
| "id": "21dd2f36-c2ef-4047-8c17-116aa04d3136", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "0.5660377358490566" | |
| ] | |
| }, | |
| "execution_count": 14, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "get_tc_from_rdk(rd_mol1, rd_mol2)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 15, | |
| "id": "7912b70c-71a6-4f8c-ab70-dbf35439aa0f", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "0.5660377358490566" | |
| ] | |
| }, | |
| "execution_count": 15, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "get_tc_from_csk(cos_mol1, cos_mol2)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 16, | |
| "id": "7dc27ae6-f811-4478-9a07-b87808446fbc", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "for i in range(len(rdk_sdf)):\n", | |
| " for j in range(i):\n", | |
| " rd_m1 = rdk_sdf[i]\n", | |
| " rd_m2 = rdk_sdf[j]\n", | |
| " \n", | |
| " cs_m1 = cosmol_sdf[i]\n", | |
| " cs_m2 = cosmol_sdf[j]\n", | |
| " rdk_tc = get_tc_from_rdk(rd_m1, rd_m2)\n", | |
| " csk_tc = get_tc_from_csk(cs_m1, cs_m2)\n", | |
| " #print(f\"Tc_RDKit : {rdk_tc:.3} Tc_Cosmol :{csk_tc:.3}\")\n", | |
| " assert rdk_tc - csk_tc == 0.\n", | |
| " #print(f\"####\")\n", | |
| " " | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 17, | |
| "id": "99a93805-fccf-43a9-8150-dce4ac1c9972", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "from IPython.display import SVG\n", | |
| "from cosmolkit import Molecule\n", | |
| "mol = Molecule.from_smiles(\"c1ccccc1O\").with_2d_coordinates()\n", | |
| "\n", | |
| "svg = mol.to_svg(width=400, height=300)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 18, | |
| "id": "877afad2-b7a1-4f31-b3eb-2cd71161fe67", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/svg+xml": [ | |
| "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:rdkit=\"http://www.rdkit.org/xml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" baseProfile=\"full\" xml:space=\"preserve\" width=\"400px\" height=\"300px\" viewBox=\"0 0 400 300\">\n", | |
| "<!-- END OF HEADER -->\n", | |
| "<rect style=\"opacity:1.0;fill:#FFFFFF;stroke:none\" width=\"400.0\" height=\"300.0\" x=\"0.0\" y=\"0.0\"> </rect>\n", | |
| "<path class=\"bond-0 atom-0 atom-1\" d=\"M 181.1,242.3 L 74.5,242.3\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n", | |
| "<path class=\"bond-1 atom-1 atom-2\" d=\"M 74.5,242.3 L 21.2,150.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n", | |
| "<path class=\"bond-1 atom-1 atom-2\" d=\"M 83.7,226.3 L 39.7,150.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n", | |
| "<path class=\"bond-2 atom-2 atom-3\" d=\"M 21.2,150.0 L 74.5,57.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n", | |
| "<path class=\"bond-3 atom-3 atom-4\" d=\"M 74.5,57.7 L 181.1,57.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n", | |
| "<path class=\"bond-3 atom-3 atom-4\" d=\"M 83.7,73.7 L 171.8,73.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n", | |
| "<path class=\"bond-4 atom-4 atom-5\" d=\"M 181.1,57.7 L 234.3,150.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n", | |
| "<path class=\"bond-5 atom-5 atom-6\" d=\"M 234.3,150.0 L 279.9,150.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n", | |
| "<path class=\"bond-5 atom-5 atom-6\" d=\"M 279.9,150.0 L 325.4,150.0\" style=\"fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n", | |
| "<path class=\"bond-6 atom-5 atom-0\" d=\"M 234.3,150.0 L 181.1,242.3\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n", | |
| "<path class=\"bond-6 atom-5 atom-0\" d=\"M 215.9,150.0 L 171.8,226.3\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n", | |
| "<path d=\"M 175.7,242.3 L 181.1,242.3 L 183.7,237.7\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;\"/>\n", | |
| "<path d=\"M 79.8,242.3 L 74.5,242.3 L 71.9,237.7\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;\"/>\n", | |
| "<path d=\"M 23.9,154.6 L 21.2,150.0 L 23.9,145.4\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;\"/>\n", | |
| "<path d=\"M 71.9,62.3 L 74.5,57.7 L 79.8,57.7\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;\"/>\n", | |
| "<path d=\"M 175.7,57.7 L 181.1,57.7 L 183.7,62.3\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;\"/>\n", | |
| "<text x=\"328.9\" y=\"170.0\" class=\"atom-6\" style=\"font-size:40px;font-style:normal;font-weight:normal;fill-opacity:1;stroke:none;font-family:sans-serif;text-anchor:start;fill:#FF0000\">O</text>\n", | |
| "<text x=\"356.5\" y=\"170.0\" class=\"atom-6\" style=\"font-size:40px;font-style:normal;font-weight:normal;fill-opacity:1;stroke:none;font-family:sans-serif;text-anchor:start;fill:#FF0000\">H</text>\n", | |
| "</svg>" | |
| ], | |
| "text/plain": [ | |
| "<IPython.core.display.SVG object>" | |
| ] | |
| }, | |
| "execution_count": 18, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "SVG(svg)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "id": "2e0ff2cb-192d-4bd8-a6db-11a20578ba4c", | |
| "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.14.7" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 5 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment