From ab3d1b76344d6556fe1401a8d6bca2f7217eaefb Mon Sep 17 00:00:00 2001 From: my-name Date: Fri, 15 Nov 2024 00:20:18 +0100 Subject: [PATCH] Update jupyter notebook for manual check --- cell2mol/final_c2m_driver.py | 2 +- cell2mol/test/check_Cell_object.ipynb | 1860 ++++++++++++++++++++++++- 2 files changed, 1818 insertions(+), 44 deletions(-) diff --git a/cell2mol/final_c2m_driver.py b/cell2mol/final_c2m_driver.py index 8f12b635..dd0798fb 100644 --- a/cell2mol/final_c2m_driver.py +++ b/cell2mol/final_c2m_driver.py @@ -20,7 +20,7 @@ def main(): if prefiter_cif(input_path): handle_cif_file(input_path, system_type, name, current_dir, debug_mode) else: - exit_with_error("g") + exit_with_error("CIF file is not suitable for processing") elif extension == ".xyz": handle_xyz_file(input_path, system_type, name, cell_para, current_dir, debug_mode) else: diff --git a/cell2mol/test/check_Cell_object.ipynb b/cell2mol/test/check_Cell_object.ipynb index 01ce04f0..448a98fb 100644 --- a/cell2mol/test/check_Cell_object.ipynb +++ b/cell2mol/test/check_Cell_object.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -11,7 +11,7 @@ "'2023.09.6'" ] }, - "execution_count": 71, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -23,7 +23,7 @@ "from IPython.display import display\n", "from rdkit.Chem.Draw import IPythonConsole\n", "from rdkit.Chem import rdDetermineBonds\n", - "\n", + "import matplotlib.pyplot as plt \n", "IPythonConsole.ipython_3d = False\n", "import rdkit\n", "rdkit.__version__" @@ -31,7 +31,7 @@ }, { "cell_type": "code", - "execution_count": 83, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -44,37 +44,858 @@ }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "refcode = \"AWEVON\"\n", + "refcell = np.load(f\"{refcode}/Ref_Cell_{refcode}.cell\", allow_pickle=True)\n", + "unitcell = np.load(f\"{refcode}/Cell_{refcode}.cell\", allow_pickle=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "------------- Cell2mol CELL Object ----------------\n", + " Version = 2.0\n", + " Type = cell\n", + " Sub-Type = reference\n", + " Name (Refcode) = AWEVON\n", + " Num Atoms = 67\n", + " Cell Parameters a:c = [ 9.3985 9.5346 11.7627]\n", + " Cell Parameters al:ga = [78.137 86.56 70.568]\n", + "---------------------------------------------------\n", + " # of Ref Molecules: = 3\n", + " With Formulae: \n", + " 0: I3 \n", + " 1: H2-C-Cl2 \n", + " 2: H32-C20-Fe-As4-I2 " + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "refcell" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "------------- Cell2mol CELL Object ----------------\n", + " Version = 2.0\n", + " Type = cell\n", + " Sub-Type = unitcell\n", + " Name (Refcode) = AWEVON\n", + " Num Atoms = 72\n", + " Cell Parameters a:c = [ 9.3985 9.5346 11.7627]\n", + " Cell Parameters al:ga = [78.137 86.56 70.568]\n", + " # Molecules: = 4\n", + " With Formulae: \n", + " 0: H2-C-Cl2 \n", + " 1: H2-C-Cl2 \n", + " 2: I3 \n", + " 3: H32-C20-Fe-As4-I2 \n", + "---------------------------------------------------\n", + " # of Ref Molecules: = 3\n", + " With Formulae: \n", + " 0: I3 \n", + " 1: H2-C-Cl2 \n", + " 2: H32-C20-Fe-As4-I2 " + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "unitcell" + ] + }, + { + "cell_type": "code", + "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'Te'" + "7" ] }, - "execution_count": 91, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "elemdatabase.elementsym[52]" + "len(refcell.species_list)" ] }, { "cell_type": "code", - "execution_count": 117, + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7\n", + "I3 0 [------------- Cell2mol Charge State ---------------\n", + " Status = True\n", + " Smiles = I[I-]I\n", + " Charge Tried = -1\n", + " Uncorrected Total Charge = -1\n", + " Corrected Total Charge = -1\n", + " Corrected Absolute Total Charge = 1\n", + " Corrected Is Zwitterion? = False\n", + "---------------------------------------------------\n", + "] ['reference', 'molecule']\n", + "H2-C-Cl2 1 [------------- Cell2mol Charge State ---------------\n", + " Status = True\n", + " Smiles = [H]C([H])(Cl)Cl\n", + " Charge Tried = 0\n", + " Uncorrected Total Charge = 0\n", + " Corrected Total Charge = 0\n", + " Corrected Absolute Total Charge = 0\n", + " Corrected Is Zwitterion? = False\n", + "---------------------------------------------------\n", + "] ['reference', 'molecule']\n", + "H16-C10-As2 2 [------------- Cell2mol Charge State ---------------\n", + " Status = True\n", + " Smiles = [H]c1c([H])c([H])c([As](C([H])([H])[H])C([H])([H])[H])c([As](C([H])([H])[H])C([H])([H])[H])c1[H]\n", + " Charge Tried = 0\n", + " Uncorrected Total Charge = 0\n", + " Corrected Total Charge = 0\n", + " Corrected Absolute Total Charge = 0\n", + " Corrected Is Zwitterion? = False\n", + "---------------------------------------------------\n", + "] ['molecule', 'reference']\n", + "H16-C10-As2 2 [------------- Cell2mol Charge State ---------------\n", + " Status = True\n", + " Smiles = [H]c1c([H])c([H])c([As](C([H])([H])[H])C([H])([H])[H])c([As](C([H])([H])[H])C([H])([H])[H])c1[H]\n", + " Charge Tried = 0\n", + " Uncorrected Total Charge = 0\n", + " Corrected Total Charge = 0\n", + " Corrected Absolute Total Charge = 0\n", + " Corrected Is Zwitterion? = False\n", + "---------------------------------------------------\n", + "] ['molecule', 'reference']\n", + "I 3 [------------- Cell2mol Charge State ---------------\n", + " Status = True\n", + " Smiles = [I-]\n", + " Charge Tried = -1\n", + " Uncorrected Total Charge = -1\n", + " Corrected Total Charge = -1\n", + " Corrected Absolute Total Charge = 1\n", + " Corrected Is Zwitterion? = False\n", + "---------------------------------------------------\n", + "] ['molecule', 'reference']\n", + "I 3 [------------- Cell2mol Charge State ---------------\n", + " Status = True\n", + " Smiles = [I-]\n", + " Charge Tried = -1\n", + " Uncorrected Total Charge = -1\n", + " Corrected Total Charge = -1\n", + " Corrected Absolute Total Charge = 1\n", + " Corrected Is Zwitterion? = False\n", + "---------------------------------------------------\n", + "] ['molecule', 'reference']\n", + "Fe 4 [2, 3] ['molecule', 'reference']\n" + ] + } + ], + "source": [ + "cell = refcell\n", + "print(len(cell.species_list))\n", + "for specie in cell.species_list:\n", + "# for specie in refcell.unique_species:\n", + "\n", + " if hasattr(specie, \"possible_cs\"):\n", + " print(specie.formula, specie.unique_index, specie.possible_cs, [p.subtype for p in specie.parents])\n", + " else:\n", + " print(specie.formula, specie.unique_index, \"No possible cs\", [p.subtype for p in specie.parents])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 27, "metadata": {}, "outputs": [], "source": [ - "refcode = \"HUFDER\"\n", - "refcell = np.load(f\"{refcode}/Ref_Cell_{refcode}.cell\", allow_pickle=True)\n" + "import pandas as pd" ] }, { "cell_type": "code", - "execution_count": 118, + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "temp = []\n", + "for elem in elemdatabase.CovalentRadius3.keys():\n", + " for elem2 in elemdatabase.CovalentRadius3.keys():\n", + " temp.append(f\"{elem}-{elem2}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.DataFrame({\"pair\":temp, \"elem1\":elem_list, \"elem2\":elem2_list, \"dist\": original_list, \"dist2\": new_list, \"sum\": sum_list})" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [], + "source": [ + "df[\"diff\"] = df[\"dist\"] - df[\"sum\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
pairelem1elem2distdist2sumdiff
0H-HHH0.8060.920.620.186
1H-DHD0.8060.920.620.186
2H-HeHHe0.7670.890.590.177
3H-LiHLi2.0671.891.590.477
4H-BeHBe1.6511.571.270.381
........................
9404Cm-UCmU4.7453.953.651.095
9405Cm-NpCmNp4.6673.893.591.077
9406Cm-PuCmPu4.6283.863.561.068
9407Cm-AmCmAm4.5373.793.491.047
9408Cm-CmCmCm4.3943.683.381.014
\n", + "

9409 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " pair elem1 elem2 dist dist2 sum diff\n", + "0 H-H H H 0.806 0.92 0.62 0.186\n", + "1 H-D H D 0.806 0.92 0.62 0.186\n", + "2 H-He H He 0.767 0.89 0.59 0.177\n", + "3 H-Li H Li 2.067 1.89 1.59 0.477\n", + "4 H-Be H Be 1.651 1.57 1.27 0.381\n", + "... ... ... ... ... ... ... ...\n", + "9404 Cm-U Cm U 4.745 3.95 3.65 1.095\n", + "9405 Cm-Np Cm Np 4.667 3.89 3.59 1.077\n", + "9406 Cm-Pu Cm Pu 4.628 3.86 3.56 1.068\n", + "9407 Cm-Am Cm Am 4.537 3.79 3.49 1.047\n", + "9408 Cm-Cm Cm Cm 4.394 3.68 3.38 1.014\n", + "\n", + "[9409 rows x 7 columns]" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Cd': 97,\n", + " 'Nd': 97,\n", + " 'Tm': 97,\n", + " 'Er': 97,\n", + " 'Ho': 97,\n", + " 'Dy': 97,\n", + " 'Tb': 97,\n", + " 'Gd': 97,\n", + " 'Eu': 97,\n", + " 'Sm': 97,\n", + " 'Pm': 97,\n", + " 'Pr': 97,\n", + " 'Pd': 97,\n", + " 'Ce': 97,\n", + " 'La': 97,\n", + " 'Ba': 97,\n", + " 'Cs': 97,\n", + " 'Xe': 97,\n", + " 'I': 97,\n", + " 'Sb': 97,\n", + " 'Sn': 97,\n", + " 'In': 97,\n", + " 'Yb': 97,\n", + " 'Lu': 97,\n", + " 'Hf': 97,\n", + " 'Ta': 97,\n", + " 'Am': 97,\n", + " 'Pu': 97,\n", + " 'Np': 97,\n", + " 'U': 97,\n", + " 'Pa': 97,\n", + " 'Th': 97,\n", + " 'Ac': 97,\n", + " 'Ra': 97,\n", + " 'Fr': 97,\n", + " 'Rn': 97,\n", + " 'At': 97,\n", + " 'Po': 97,\n", + " 'Bi': 97,\n", + " 'Pb': 97,\n", + " 'Tl': 97,\n", + " 'Ir': 97,\n", + " 'Os': 97,\n", + " 'Re': 97,\n", + " 'W': 97,\n", + " 'Ag': 97,\n", + " 'Cm': 97,\n", + " 'Rh': 97,\n", + " 'Rb': 97,\n", + " 'Na': 97,\n", + " 'Mg': 97,\n", + " 'K': 97,\n", + " 'Ca': 97,\n", + " 'Sc': 97,\n", + " 'V': 97,\n", + " 'Cr': 97,\n", + " 'Mn': 97,\n", + " 'Ti': 97,\n", + " 'Y': 97,\n", + " 'Zr': 97,\n", + " 'Tc': 97,\n", + " 'Ru': 97,\n", + " 'Mo': 97,\n", + " 'Nb': 97,\n", + " 'Sr': 97,\n", + " 'Au': 96,\n", + " 'Pt': 96,\n", + " 'Te': 96,\n", + " 'Hg': 94,\n", + " 'Br': 94,\n", + " 'Li': 94,\n", + " 'Kr': 94,\n", + " 'Si': 94,\n", + " 'Fe': 94,\n", + " 'Co': 94,\n", + " 'Ni': 94,\n", + " 'Cu': 94,\n", + " 'Zn': 94,\n", + " 'Ga': 94,\n", + " 'Ge': 94,\n", + " 'As': 94,\n", + " 'Se': 94,\n", + " 'Al': 94,\n", + " 'Cl': 92,\n", + " 'P': 92,\n", + " 'S': 92,\n", + " 'Ar': 92,\n", + " 'Be': 91,\n", + " 'B': 89,\n", + " 'N': 88,\n", + " 'C': 88,\n", + " 'O': 87,\n", + " 'Ne': 83,\n", + " 'F': 83,\n", + " 'D': 68,\n", + " 'H': 68,\n", + " 'He': 65}" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dict(df[(df[\"diff\"]> 0.5)].elem1.value_counts())" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([ 5., 4., 0., 0., 0., 0., 8., 4., 6., 8., 4.,\n", + " 0., 10., 0., 6., 12., 11., 20., 13., 13., 40., 18.,\n", + " 18., 50., 59., 64., 74., 30., 44., 63., 72., 79., 88.,\n", + " 84., 97., 105., 102., 107., 90., 128., 187., 139., 179., 253.,\n", + " 217., 236., 270., 227., 296., 302., 254., 234., 184., 218., 299.,\n", + " 234., 289., 241., 285., 313., 371., 292., 264., 165., 196., 187.,\n", + " 142., 138., 113., 100., 152., 152., 112., 133., 80., 91., 75.,\n", + " 35., 50., 24., 18., 26., 13., 11., 22., 10., 14., 12.,\n", + " 6., 0., 4., 4., 0., 1., 0., 0., 2., 0., 0.,\n", + " 1.]),\n", + " array([0.168 , 0.18192, 0.19584, 0.20976, 0.22368, 0.2376 , 0.25152,\n", + " 0.26544, 0.27936, 0.29328, 0.3072 , 0.32112, 0.33504, 0.34896,\n", + " 0.36288, 0.3768 , 0.39072, 0.40464, 0.41856, 0.43248, 0.4464 ,\n", + " 0.46032, 0.47424, 0.48816, 0.50208, 0.516 , 0.52992, 0.54384,\n", + " 0.55776, 0.57168, 0.5856 , 0.59952, 0.61344, 0.62736, 0.64128,\n", + " 0.6552 , 0.66912, 0.68304, 0.69696, 0.71088, 0.7248 , 0.73872,\n", + " 0.75264, 0.76656, 0.78048, 0.7944 , 0.80832, 0.82224, 0.83616,\n", + " 0.85008, 0.864 , 0.87792, 0.89184, 0.90576, 0.91968, 0.9336 ,\n", + " 0.94752, 0.96144, 0.97536, 0.98928, 1.0032 , 1.01712, 1.03104,\n", + " 1.04496, 1.05888, 1.0728 , 1.08672, 1.10064, 1.11456, 1.12848,\n", + " 1.1424 , 1.15632, 1.17024, 1.18416, 1.19808, 1.212 , 1.22592,\n", + " 1.23984, 1.25376, 1.26768, 1.2816 , 1.29552, 1.30944, 1.32336,\n", + " 1.33728, 1.3512 , 1.36512, 1.37904, 1.39296, 1.40688, 1.4208 ,\n", + " 1.43472, 1.44864, 1.46256, 1.47648, 1.4904 , 1.50432, 1.51824,\n", + " 1.53216, 1.54608, 1.56 ]),\n", + " )" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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UXrzzTdVU1PjudsHAAC0bwELKVOnTtX333+vJUuWyOVyacSIEdq6davi4uICVZJPbDabcnNzrzkN1Z7QB/RBez9+iT6Q6AOJPpD80wdhltXc+4AAAADaDi8YBAAARiKkAAAAIxFSAACAkQgpAADASISUGygoKNDtt9+uTp06KSUlRX/729+u2/add97R/fffrx/96Ef60Y9+pNTU1Bu2Dxa+9MH/tWHDBoWFhenRRx/1b4F+5uvxnz9/XllZWYqPj5fNZtOAAQO0efPmNqrWP3ztgzfffFMDBw5U586dlZiYqPnz5+vSpUttVG3r2717t6ZMmaKEhASFhYXpww8/vOlndu3apX/5l3+RzWbTnXfeqTVr1vi9Tn/x9fg/+OADjR8/Xr169ZLdbpfT6dS2bde+FyaYtORn4Ir/+q//UocOHTRixAi/1dcWWtIHtbW1eumll9S3b1/ZbDbdfvvt+sMf/uDTfgkp1/Huu+8qOztbubm5+vLLLzV8+HClpaWpsrKyyfa7du3Sk08+qU8//VQlJSVKTEzUhAkT9I9//KONK289vvbBFSdOnNALL7yg+++/v40q9Q9fj7+urk7jx4/XiRMn9P7776u8vFzvvPOObrvttjauvPX42geFhYVatGiRcnNzdeTIEa1atUrvvvuufvGLX7Rx5a2npqZGw4cPV0FBQbPaf/vtt0pPT9dDDz2ksrIyPf/883r66aeD9he1r8e/e/dujR8/Xps3b1ZpaakeeughTZkyRfv37/dzpf7jax9ccf78ec2cOVPjxo3zU2VtpyV98MQTT6ioqEirVq1SeXm51q9fr4EDB/q241t/XWBoGjVqlJWVleWZb2hosBISEqz8/Pxmfb6+vt7q3r27tXbtWn+V6Hct6YP6+nrrxz/+sfWf//mfVmZmpvXII4+0QaX+4evxr1ixwurXr59VV1fXViX6na99kJWVZT388MNey7Kzs60xY8b4tc62IsnauHHjDdu8+OKL1t133+21bOrUqVZaWpofK2sbzTn+piQlJVl5eXmtX1AA+NIHU6dOtRYvXmzl5uZaw4cP92tdbak5fbBlyxYrKirKOnv27C3ti5GUJtTV1am0tFSpqameZeHh4UpNTVVJSUmztnHx4kVdvnxZMTEx/irTr1raB0uXLlVsbKxmzZrVFmX6TUuO/y9/+YucTqeysrIUFxen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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.hist(df[\"diff\"], bins=100)" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
pairelem1elem2distdist2sumdiff
2531Fe-FFeF2.4572.191.890.567
\n", + "
" + ], + "text/plain": [ + " pair elem1 elem2 dist dist2 sum diff\n", + "2531 Fe-F Fe F 2.457 2.19 1.89 0.567" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[(df[\"pair\"]==\"Fe-F\")]" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
pairelem1elem2distdist2sumdiff
7181W-LiWLi3.7703.202.900.870
7189W-NaWNa4.2643.583.280.984
7190W-MgWMg3.9393.333.030.909
7191W-AlWAl3.6793.132.830.849
7192W-SiWSi3.5493.032.730.819
........................
7270W-UWU4.6543.883.581.074
7271W-NpWNp4.5763.823.521.056
7272W-PuWPu4.5373.793.491.047
7273W-AmWAm4.4463.723.421.026
7274W-CmWCm4.3033.613.310.993
\n", + "

86 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " pair elem1 elem2 dist dist2 sum diff\n", + "7181 W-Li W Li 3.770 3.20 2.90 0.870\n", + "7189 W-Na W Na 4.264 3.58 3.28 0.984\n", + "7190 W-Mg W Mg 3.939 3.33 3.03 0.909\n", + "7191 W-Al W Al 3.679 3.13 2.83 0.849\n", + "7192 W-Si W Si 3.549 3.03 2.73 0.819\n", + "... ... ... ... ... ... ... ...\n", + "7270 W-U W U 4.654 3.88 3.58 1.074\n", + "7271 W-Np W Np 4.576 3.82 3.52 1.056\n", + "7272 W-Pu W Pu 4.537 3.79 3.49 1.047\n", + "7273 W-Am W Am 4.446 3.72 3.42 1.026\n", + "7274 W-Cm W Cm 4.303 3.61 3.31 0.993\n", + "\n", + "[86 rows x 7 columns]" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[(df[\"elem1\"]==\"W\") & (df[\"diff\"]> 0.8)]" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "df[\"diff\"] = df[\"dist\"] - df[\"dist2\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [], + "source": [ + "mul = 1.3\n", + "add = 0.3\n", + "elem_list = []\n", + "elem2_list = []\n", + "original_list = []\n", + "new_list = []\n", + "sum_list = []\n", + "for elem in elemdatabase.CovalentRadius3.keys():\n", + " for elem2 in elemdatabase.CovalentRadius3.keys():\n", + " original = (elemdatabase.CovalentRadius3[elem] + elemdatabase.CovalentRadius3[elem2])*mul\n", + " new = round(elemdatabase.CovalentRadius3[elem] + elemdatabase.CovalentRadius3[elem2] + add,3)\n", + " sum = round(elemdatabase.CovalentRadius3[elem] + elemdatabase.CovalentRadius3[elem2],3)\n", + " elem_list.append(elem)\n", + " elem2_list.append(elem2)\n", + " original_list.append(original)\n", + " new_list.append(new)\n", + " sum_list.append(sum)" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": {}, "outputs": [ { @@ -84,24 +905,80 @@ " Version = 2.0\n", " Type = cell\n", " Sub-Type = reference\n", - " Name (Refcode) = HUFDER\n", - " Num Atoms = 90\n", - " Cell Parameters a:c = [15.9997 13.4821 15.076 ]\n", - " Cell Parameters al:ga = [ 90. 102.669 90. ]\n", + " Name (Refcode) = IQIRAC\n", + " Num Atoms = 219\n", + " Cell Parameters a:c = [47.064 14.292 26.094]\n", + " Cell Parameters al:ga = [90. 90.503 90. ]\n", "---------------------------------------------------\n", - " # of Ref Molecules: = 2\n", + " # of Ref Molecules: = 3\n", " With Formulae: \n", - " 0: H26-C12-N4-Cl2-Fe \n", - " 1: H26-C12-N4-Cl2-Fe " + " 0: H18-C20-N4-O41-Fe-Zn-W12 \n", + " 1: H24-C30-N6-Fe \n", + " 2: H24-C30-N6-Fe " ] }, - "execution_count": 118, + "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "refcell" + "refcell.unique_species" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "------------- Cell2mol CELL Object ----------------\n", + " Version = 2.0\n", + " Type = cell\n", + " Sub-Type = unitcell\n", + " Name (Refcode) = IQIRAC\n", + " Num Atoms = 1508\n", + " Cell Parameters a:c = [47.064 14.292 26.094]\n", + " Cell Parameters al:ga = [90. 90.503 90. ]\n", + " # Molecules: = 20\n", + " With Formulae: \n", + " 0: H24-C30-N6-Fe \n", + " 1: H24-C30-N6-Fe \n", + " 2: H24-C30-N6-Fe \n", + " 3: H24-C30-N6-Fe \n", + " 4: H24-C30-N6-Fe \n", + " 5: H24-C30-N6-Fe \n", + " 6: H18-C20-N4-O41-Fe-Zn-W12 \n", + " 7: H24-C30-N6-Fe \n", + " 8: H18-C20-N4-O41-Fe-Zn-W12 \n", + " 9: H18-C20-N4-O41-Fe-Zn-W12 \n", + " 10: H24-C30-N6-Fe \n", + " 11: H18-C20-N4-O41-Fe-Zn-W12 \n", + " 12: H24-C30-N6-Fe \n", + " 13: H18-C20-N4-O41-Fe-Zn-W12 \n", + " 14: H24-C30-N6-Fe \n", + " 15: H18-C20-N4-O41-Fe-Zn-W12 \n", + " 16: H18-C20-N4-O41-Fe-Zn-W12 \n", + " 17: H24-C30-N6-Fe \n", + " 18: H18-C20-N4-O41-Fe-Zn-W12 \n", + " 19: H24-C30-N6-Fe \n", + "---------------------------------------------------\n", + " # of Ref Molecules: = 3\n", + " With Formulae: \n", + " 0: H18-C20-N4-O41-Fe-Zn-W12 \n", + " 1: H24-C30-N6-Fe \n", + " 2: H24-C30-N6-Fe " + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "unitcell" ] }, { @@ -113,36 +990,880 @@ "name": "stdout", "output_type": "stream", "text": [ - "Reference Molecule : H26-C12-N4-Cl2-Fe\n", - "\t Fe\n" - ] - }, - { - "ename": "AttributeError", - "evalue": "'ligand' object has no attribute 'smiles'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[120], line 6\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;130;01m\\t\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, met\u001b[38;5;241m.\u001b[39mlabel)\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m lig \u001b[38;5;129;01min\u001b[39;00m ref\u001b[38;5;241m.\u001b[39mligands:\n\u001b[0;32m----> 6\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;130;01m\\t\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, lig\u001b[38;5;241m.\u001b[39mformula, \u001b[43mlig\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msmiles\u001b[49m)\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mUnique Species in Reference Cell:\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m specie \u001b[38;5;129;01min\u001b[39;00m refcell\u001b[38;5;241m.\u001b[39munique_species:\n", - "\u001b[0;31mAttributeError\u001b[0m: 'ligand' object has no attribute 'smiles'" + "Reference Molecule : H18-C20-N4-O41-Fe-Zn-W12 -3\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t Zn 2 O4\n", + "\t Fe 3 N4-O2\n", + "\t H2-O 0 [H]O[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "Reference Molecule : H24-C30-N6-Fe 2\n", + "\t Fe 2 N6\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "Reference Molecule : H24-C30-N6-Fe 2\n", + "\t Fe 2 N6\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "Unique Species in Reference Cell:\n", + "\t H2-O 0 [H]O[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t O -2 [O-2]\n", + "\t W 6 O6-W2\n", + "\t Zn 2 O4\n", + "\t Fe 3 N4-O2\n", + "\t Fe 2 N6\n" ] } ], "source": [ - " for i, ref in enumerate(refcell.refmoleclist):\n", - " print(f\"Reference Molecule :\", ref.formula)\n", + "for i, ref in enumerate(refcell.refmoleclist):\n", + " if hasattr(ref, \"totcharge\"):\n", + " print(f\"Reference Molecule :\", ref.formula, ref.totcharge)\n", + " else:\n", + " print(f\"Reference Molecule :\", ref.formula)\n", " for met in ref.metals:\n", - " print(\"\\t\", met.label)\n", + " if hasattr(met, \"charge\"):\n", + " print(\"\\t\", met.label, met.charge, met.coord_sphere_formula)\n", + " else:\n", + " print(\"\\t\", met.label, met.coord_sphere_formula)\n", " for lig in ref.ligands:\n", - " print(\"\\t\", lig.formula, lig.smiles)\n", + " if hasattr(lig, \"totcharge\"):\n", + " print(\"\\t\", lig.formula, lig.totcharge, lig.smiles)\n", + " else:\n", + " print(\"\\t\", lig.formula, lig.smiles)\n", + "\n", "\n", "print(\"Unique Species in Reference Cell:\")\n", "for specie in refcell.unique_species:\n", " if specie.subtype == \"metal\":\n", - " print(\"\\t\", specie.formula)\n", + " if hasattr(specie, \"charge\"):\n", + " print(\"\\t\", specie.formula, specie.charge, specie.coord_sphere_formula)\n", + " else:\n", + " print(\"\\t\", specie.formula, specie.coord_sphere_formula)\n", " else:\n", - " print(\"\\t\", specie.formula, specie.smiles) " + " if hasattr(specie, \"totcharge\"):\n", + " print(\"\\t\", specie.formula, specie.totcharge, specie.smiles)\n", + " else:\n", + " print(\"\\t\", specie.formula, specie.smiles) " + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H2-O [------------- Cell2mol MOLECULE Object --------------\n", + " Version = 2.0\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 97\n", + " Formula = H18-C20-N4-O41-Fe-Zn-W12\n", + " Covalent Radii Factor = 1.3\n", + " Metal Radii Factor = 1.0\n", + " Has Adjacency Matrix = YES\n", + " Number of Ligands = 43\n", + " Number of Metals = 14\n", + "---------------------------------------------------\n", + ", ------------- Cell2mol CELL Object ----------------\n", + " Version = 2.0\n", + " Type = cell\n", + " Sub-Type = reference\n", + " Name (Refcode) = IQIRAC\n", + " Num Atoms = 219\n", + " Cell Parameters a:c = [47.064 14.292 26.094]\n", + " Cell Parameters al:ga = [90. 90.503 90. ]\n", + "---------------------------------------------------\n", + "]\n", + "H8-C10-N2 [------------- Cell2mol MOLECULE Object --------------\n", + " Version = 2.0\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 97\n", + " Formula = H18-C20-N4-O41-Fe-Zn-W12\n", + " Covalent Radii Factor = 1.3\n", + " Metal Radii Factor = 1.0\n", + " Has Adjacency Matrix = YES\n", + " Number of Ligands = 43\n", + " Number of Metals = 14\n", + "---------------------------------------------------\n", + ", ------------- Cell2mol CELL Object ----------------\n", + " Version = 2.0\n", + " Type = cell\n", + " Sub-Type = reference\n", + " Name (Refcode) = IQIRAC\n", + " Num Atoms = 219\n", + " Cell Parameters a:c = [47.064 14.292 26.094]\n", + " Cell Parameters al:ga = [90. 90.503 90. ]\n", + "---------------------------------------------------\n", + "]\n", + "O [------------- Cell2mol MOLECULE Object --------------\n", + " Version = 2.0\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 97\n", + " Formula = H18-C20-N4-O41-Fe-Zn-W12\n", + " Covalent Radii Factor = 1.3\n", + " Metal Radii Factor = 1.0\n", + " Has Adjacency Matrix = YES\n", + " Number of Ligands = 43\n", + " Number of Metals = 14\n", + "---------------------------------------------------\n", + ", ------------- Cell2mol CELL Object ----------------\n", + " Version = 2.0\n", + " Type = cell\n", + " Sub-Type = reference\n", + " Name (Refcode) = IQIRAC\n", + " Num Atoms = 219\n", + " Cell Parameters a:c = [47.064 14.292 26.094]\n", + " Cell Parameters al:ga = [90. 90.503 90. ]\n", + "---------------------------------------------------\n", + "]\n", + "W [------------- Cell2mol MOLECULE Object --------------\n", + " Version = 2.0\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 97\n", + " Formula = H18-C20-N4-O41-Fe-Zn-W12\n", + " Covalent Radii Factor = 1.3\n", + " Metal Radii Factor = 1.0\n", + " Has Adjacency Matrix = YES\n", + " Number of Ligands = 43\n", + " Number of Metals = 14\n", + "---------------------------------------------------\n", + ", ------------- Cell2mol CELL Object ----------------\n", + " Version = 2.0\n", + " Type = cell\n", + " Sub-Type = reference\n", + " Name (Refcode) = IQIRAC\n", + " Num Atoms = 219\n", + " Cell Parameters a:c = [47.064 14.292 26.094]\n", + " Cell Parameters al:ga = [90. 90.503 90. ]\n", + "---------------------------------------------------\n", + "]\n", + "Zn [------------- Cell2mol MOLECULE Object --------------\n", + " Version = 2.0\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 97\n", + " Formula = H18-C20-N4-O41-Fe-Zn-W12\n", + " Covalent Radii Factor = 1.3\n", + " Metal Radii Factor = 1.0\n", + " Has Adjacency Matrix = YES\n", + " Number of Ligands = 43\n", + " Number of Metals = 14\n", + "---------------------------------------------------\n", + ", ------------- Cell2mol CELL Object ----------------\n", + " Version = 2.0\n", + " Type = cell\n", + " Sub-Type = reference\n", + " Name (Refcode) = IQIRAC\n", + " Num Atoms = 219\n", + " Cell Parameters a:c = [47.064 14.292 26.094]\n", + " Cell Parameters al:ga = [90. 90.503 90. ]\n", + "---------------------------------------------------\n", + "]\n", + "Fe [------------- Cell2mol MOLECULE Object --------------\n", + " Version = 2.0\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 97\n", + " Formula = H18-C20-N4-O41-Fe-Zn-W12\n", + " Covalent Radii Factor = 1.3\n", + " Metal Radii Factor = 1.0\n", + " Has Adjacency Matrix = YES\n", + " Number of Ligands = 43\n", + " Number of Metals = 14\n", + "---------------------------------------------------\n", + ", ------------- Cell2mol CELL Object ----------------\n", + " Version = 2.0\n", + " Type = cell\n", + " Sub-Type = reference\n", + " Name (Refcode) = IQIRAC\n", + " Num Atoms = 219\n", + " Cell Parameters a:c = [47.064 14.292 26.094]\n", + " Cell Parameters al:ga = [90. 90.503 90. ]\n", + "---------------------------------------------------\n", + "]\n", + "Fe [------------- Cell2mol MOLECULE Object --------------\n", + " Version = 2.0\n", + " Type = specie\n", + " Sub-Type = molecule\n", + " Number of Atoms = 61\n", + " Formula = H24-C30-N6-Fe\n", + " Covalent Radii Factor = 1.3\n", + " Metal Radii Factor = 1.0\n", + " Has Adjacency Matrix = YES\n", + " Number of Ligands = 3\n", + " Number of Metals = 1\n", + "---------------------------------------------------\n", + ", ------------- Cell2mol CELL Object ----------------\n", + " Version = 2.0\n", + " Type = cell\n", + " Sub-Type = reference\n", + " Name (Refcode) = IQIRAC\n", + " Num Atoms = 219\n", + " Cell Parameters a:c = [47.064 14.292 26.094]\n", + " Cell Parameters al:ga = [90. 90.503 90. ]\n", + "---------------------------------------------------\n", + "]\n" + ] + } + ], + "source": [ + "for specie in unitcell.unique_species:\n", + " print(specie.formula, specie.parents)" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'H'" + ] + }, + "execution_count": 107, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "elemdatabase.elementsym[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 1, 2]" + ] + }, + "execution_count": 106, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[*range(0,3,1)]" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Unitcell Molecule 0: H24-C30-N6-Fe 2\n", + "\t Fe 2 N6\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "Unitcell Molecule 1: H24-C30-N6-Fe 2\n", + "\t Fe 2 N6\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "Unitcell Molecule 2: H24-C30-N6-Fe 2\n", + "\t Fe 2 N6\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "Unitcell Molecule 3: H24-C30-N6-Fe 2\n", + "\t Fe 2 N6\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "Unitcell Molecule 4: H24-C30-N6-Fe 2\n", + "\t Fe 2 N6\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "Unitcell Molecule 5: H24-C30-N6-Fe 2\n", + "\t Fe 2 N6\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "Unitcell Molecule 6: H18-C20-N4-O41-Fe-Zn-W12 2\n", + "\t Fe 3 N4-O2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t Zn 2 O4\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H2-O 0 [H]O[H]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "Unitcell Molecule 7: H24-C30-N6-Fe 2\n", + "\t Fe 2 N6\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "Unitcell Molecule 8: H18-C20-N4-O41-Fe-Zn-W12 2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t Zn 2 O4\n", + "\t Fe 3 N4-O2\n", + "\t H2-O 0 [H]O[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "Unitcell Molecule 9: H18-C20-N4-O41-Fe-Zn-W12 2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t Zn 2 O4\n", + "\t Fe 3 N4-O2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t H2-O 0 [H]O[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "Unitcell Molecule 10: H24-C30-N6-Fe 2\n", + "\t Fe 2 N6\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "Unitcell Molecule 11: H18-C20-N4-O41-Fe-Zn-W12 2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t Zn 2 O4\n", + "\t Fe 3 N4-O2\n", + "\t H2-O 0 [H]O[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "Unitcell Molecule 12: H24-C30-N6-Fe 2\n", + "\t Fe 2 N6\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "Unitcell Molecule 13: H18-C20-N4-O41-Fe-Zn-W12 2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t Zn 2 O4\n", + "\t Fe 3 N4-O2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t H2-O 0 [H]O[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "Unitcell Molecule 14: H24-C30-N6-Fe 2\n", + "\t Fe 2 N6\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "Unitcell Molecule 15: H18-C20-N4-O41-Fe-Zn-W12 2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t Zn 2 O4\n", + "\t Fe 3 N4-O2\n", + "\t H2-O 0 [H]O[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "Unitcell Molecule 16: H18-C20-N4-O41-Fe-Zn-W12 2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t Zn 2 O4\n", + "\t Fe 3 N4-O2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t H2-O 0 [H]O[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "Unitcell Molecule 17: H24-C30-N6-Fe 2\n", + "\t Fe 2 N6\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "Unitcell Molecule 18: H18-C20-N4-O41-Fe-Zn-W12 2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t W 6 O6-W2\n", + "\t Zn 2 O4\n", + "\t Fe 3 N4-O2\n", + "\t H2-O 0 [H]O[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "\t O -2 [O-2]\n", + "Unitcell Molecule 19: H24-C30-N6-Fe 2\n", + "\t Fe 2 N6\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n", + "\t H8-C10-N2 0 [H]c1nc(-c2nc([H])c([H])c([H])c2[H])c([H])c([H])c1[H]\n" + ] + } + ], + "source": [ + "for i, mol in enumerate(unitcell.moleclist):\n", + " if hasattr(mol, \"totcharge\"):\n", + " print(f\"Unitcell Molecule {i}:\", mol.formula, ref.totcharge)\n", + " else:\n", + " print(f\"Unitcell Molecule {i}:\", mol.formula)\n", + " for met in mol.metals:\n", + " if hasattr(met, \"charge\"):\n", + " print(\"\\t\", met.label, met.charge, met.coord_sphere_formula)\n", + " else:\n", + " print(\"\\t\", met.label, met.coord_sphere_formula)\n", + " for lig in mol.ligands:\n", + " if hasattr(lig, \"totcharge\"):\n", + " print(\"\\t\", lig.formula, lig.totcharge, lig.smiles)\n", + " else:\n", + " print(\"\\t\", lig.formula, lig.smiles)" ] }, { @@ -157,10 +1878,63 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 100, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "temp = (0, 0)\n", + "temp[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[(0, 0), (0, 1), (1, 0), (1, 1)]\n" + ] + }, + { + "ename": "TypeError", + "evalue": "'float' object is not callable", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[99], line 10\u001b[0m\n\u001b[1;32m 8\u001b[0m combinations \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlist\u001b[39m(itertools\u001b[38;5;241m.\u001b[39mproduct(\u001b[38;5;241m*\u001b[39mtmp))\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28mprint\u001b[39m(combinations)\n\u001b[0;32m---> 10\u001b[0m \u001b[43mcombinations\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msort\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43msum\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 12\u001b[0m combinations \u001b[38;5;241m=\u001b[39m [\u001b[38;5;241m0\u001b[39m,\u001b[38;5;241m1\u001b[39m]\n", + "\u001b[0;31mTypeError\u001b[0m: 'float' object is not callable" + ] + } + ], + "source": [ + "import itertools\n", + "non_local_groups = 2\n", + "tmp = []\n", + "for kdx in range(0,non_local_groups):\n", + " tmp.append([0,1])\n", + "\n", + "if len(tmp) > 1:\n", + " combinations = list(itertools.product(*tmp))\n", + " print(combinations)\n", + " combinations.sort(key=sum)\n", + "else:\n", + " combinations = [0,1]" + ] }, { "cell_type": "code",