diff --git a/example.ipynb b/example.ipynb index 9fa3c15..79d839c 100644 --- a/example.ipynb +++ b/example.ipynb @@ -6,91 +6,58 @@ "metadata": {}, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Formula: LaRu2Ge2\n", - "Unique element: {'Ge', 'Ru', 'La'}\n", - "Structure: CeAl2Ga2\n", - "Site labels: ['Ge1', 'Ru1', 'La1']\n", - "Space group: I4/mmm\n", - "{('Ge', 'Ge'): 0.04, ('Ge', 'Ru'): 0.32, ('Ge', 'La'): 0.32, ('La', 'Ru'): 0.32}\n", - "{'Ge1': {('Ge', 'Ge'): 1, ('Ge', 'Ru'): 4}, 'Ru1': {('Ge', 'Ru'): 4}, 'La1': {('Ge', 'La'): 8, ('La', 'Ru'): 8}}\n", - "{('Ge', 'La'), ('Ru', 'Ru'), ('La', 'La'), ('Ge', 'Ge'), ('La', 'Ru'), ('Ge', 'Ru')}\n", - "{'Ge1': ('Ge1', 2.29), 'Ru1': ('Ge1', 2.554), 'La1': ('Ge1', 3.241)}\n", - "\n", - "Attached labels for Ge1\n", - "['Ge1', 'Ru1', 'Ru1', 'Ru1', 'Ru1', 'Ge1']\n", - "Attached labels for Ru1\n", - "['Ge1', 'Ge1', 'Ge1', 'Ge1', 'Ru1']\n", - "Attached labels for La1\n", - "['Ge1', 'Ge1', 'Ge1', 'Ge1', 'Ge1', 'Ge1', 'Ge1', 'Ge1', 'Ru1', 'Ru1', 'Ru1', 'Ru1', 'Ru1', 'Ru1', 'Ru1', 'Ru1', 'La1']\n", - "Formula: EuIr2Ge2\n", - "Unique element: {'Eu', 'Ge', 'Ir'}\n", - "Structure: CeAl2Ga2\n", - "Site labels: ['Ge1', 'Ir1', 'Eu1']\n", - "Space group: I4/mmm\n", - "{('Ge', 'Ge'): 0.058823529411764705, ('Ge', 'Ir'): 0.47058823529411764, ('Eu', 'Ge'): 0.47058823529411764}\n", - "{'Ge1': {('Ge', 'Ge'): 1, ('Ge', 'Ir'): 4}, 'Ir1': {('Ge', 'Ir'): 4}, 'Eu1': {('Eu', 'Ge'): 8}}\n", - "{('Eu', 'Eu'), ('Ir', 'Ir'), ('Ge', 'Ge'), ('Eu', 'Ir'), ('Eu', 'Ge'), ('Ge', 'Ir')}\n", - "{'Ge1': ('Ge1', 2.383), 'Ir1': ('Ge1', 2.537), 'Eu1': ('Ge1', 3.182)}\n", - "\n", - "Attached labels for Ge1\n", - "['Ge1', 'Ir1', 'Ir1', 'Ir1', 'Ir1', 'Ge1']\n", - "Attached labels for Ir1\n", - "['Ge1', 'Ge1', 'Ge1', 'Ge1', 'Ir1']\n", - "Attached labels for Eu1\n", - "['Ge1', 'Ge1', 'Ge1', 'Ge1', 'Ge1', 'Ge1', 'Ge1', 'Ge1', 'Eu1']\n", - "Formula: CeRu2Ge2\n", - "Unique element: {'Ge', 'Ce', 'Ru'}\n", - "Structure: CeAl2Ga2\n", - "Site labels: ['Ge1', 'Ru1', 'Ce1']\n", - "Space group: I4/mmm\n", - "{('Ge', 'Ge'): 0.04, ('Ge', 'Ru'): 0.32, ('Ce', 'Ge'): 0.32, ('Ce', 'Ru'): 0.32}\n", - "{'Ge1': {('Ge', 'Ge'): 1, ('Ge', 'Ru'): 4}, 'Ru1': {('Ge', 'Ru'): 4}, 'Ce1': {('Ce', 'Ge'): 8, ('Ce', 'Ru'): 8}}\n", - "{('Ce', 'Ru'), ('Ce', 'Ce'), ('Ce', 'Ge'), ('Ge', 'Ge'), ('Ru', 'Ru'), ('Ge', 'Ru')}\n", - "{'Ge1': ('Ge1', 2.28), 'Ru1': ('Ge1', 2.543), 'Ce1': ('Ge1', 3.227)}\n", - "\n", - "Attached labels for Ge1\n", - "['Ge1', 'Ru1', 'Ru1', 'Ru1', 'Ru1', 'Ge1']\n", - "Attached labels for Ru1\n", - "['Ge1', 'Ge1', 'Ge1', 'Ge1', 'Ru1']\n", - "Attached labels for Ce1\n", - "['Ge1', 'Ge1', 'Ge1', 'Ge1', 'Ge1', 'Ge1', 'Ge1', 'Ge1', 'Ru1', 'Ru1', 'Ru1', 'Ru1', 'Ru1', 'Ru1', 'Ru1', 'Ru1', 'Ce1']\n" + "2024-06-18 12:00:52,466 - INFO - Preprocessing file tests/data/cif/folder/300169.cif\n" + ] + }, + { + "ename": "AttributeError", + "evalue": "'str' object has no attribute 'value'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[1], line 8\u001b[0m\n\u001b[1;32m 5\u001b[0m file_paths \u001b[38;5;241m=\u001b[39m folder\u001b[38;5;241m.\u001b[39mget_file_path_list(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtests/data/cif/folder\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m file_path \u001b[38;5;129;01min\u001b[39;00m file_paths:\n\u001b[0;32m----> 8\u001b[0m cif \u001b[38;5;241m=\u001b[39m \u001b[43mCif\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfile_path\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlogging_enabled\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;66;03m# Print output\u001b[39;00m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;66;03m# print(\"Formula:\", cif.formula)\u001b[39;00m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# print(\"Unique element:\", cif.unique_elements)\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 16\u001b[0m \n\u001b[1;32m 17\u001b[0m \u001b[38;5;66;03m# Set the cut-off radius\u001b[39;00m\n\u001b[1;32m 18\u001b[0m cut_off_radius \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m4\u001b[39m\n", + "File \u001b[0;32m~/Downloads/cifkit/src/cifkit/models/cif.py:115\u001b[0m, in \u001b[0;36mCif.__init__\u001b[0;34m(self, file_path, logging_enabled)\u001b[0m\n\u001b[1;32m 113\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_shortest_pair_distance \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 114\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_preprocess()\n\u001b[0;32m--> 115\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_load_data\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/Downloads/cifkit/src/cifkit/models/cif.py:132\u001b[0m, in \u001b[0;36mCif._load_data\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 130\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Load data from the .cif file and process it.\"\"\"\u001b[39;00m\n\u001b[1;32m 131\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_block \u001b[38;5;241m=\u001b[39m get_cif_block(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfile_path)\n\u001b[0;32m--> 132\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_log_info\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mInitializing CIF processing\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 133\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parse_cif_data()\n\u001b[1;32m 134\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_generate_supercell()\n", + "File \u001b[0;32m~/Downloads/cifkit/src/cifkit/models/cif.py:120\u001b[0m, in \u001b[0;36mCif._log_info\u001b[0;34m(self, message, **kwargs)\u001b[0m\n\u001b[1;32m 118\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Log a formatted message if logging is enabled.\"\"\"\u001b[39;00m\n\u001b[1;32m 119\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlogging_enabled:\n\u001b[0;32m--> 120\u001b[0m logging\u001b[38;5;241m.\u001b[39minfo(\u001b[43mmessage\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalue\u001b[49m\u001b[38;5;241m.\u001b[39mformat(file_path\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfile_path, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs))\n", + "\u001b[0;31mAttributeError\u001b[0m: 'str' object has no attribute 'value'" ] } ], "source": [ - "from cifkit.models.cif import Cif\n", + "from cifkit import Cif\n", "from cifkit.utils import folder\n", "\n", "# Example usage\n", "file_paths = folder.get_file_path_list(\"tests/data/cif/folder\")\n", "\n", "for file_path in file_paths:\n", - " cif = Cif(file_path)\n", + " cif = Cif(file_path, logging_enabled=True)\n", "\n", " # Print output\n", - " print(\"Formula:\", cif.formula)\n", - " print(\"Unique element:\", cif.unique_elements)\n", - " print(\"Structure:\", cif.structure)\n", - " print(\"Site labels:\", cif.site_labels)\n", - " print(\"Space group:\", cif.space_group_name)\n", + " # print(\"Formula:\", cif.formula)\n", + " # print(\"Unique element:\", cif.unique_elements)\n", + " # print(\"Structure:\", cif.structure)\n", + " # print(\"Site labels:\", cif.site_labels)\n", + " # print(\"Space group:\", cif.space_group_name)\n", "\n", " # Set the cut-off radius\n", " cut_off_radius = 4\n", " cif.compute_connections(cut_off_radius)\n", - " print(cif.bond_fraction_CN)\n", - " print(cif.bond_counts_CN)\n", - " print(cif.all_bond_pairs)\n", - " print(cif.shortest_distance_per_label)\n", + " # print(cif.bond_fraction_CN)\n", + " # print(cif.bond_counts_CN)\n", + " # print(cif.all_bond_pairs)\n", + " # print(cif.shortest_distance_per_label)\n", "\n", - " print()\n", - " site_labels = cif.site_labels\n", - " for label in site_labels:\n", - " coords, labels = cif.get_polyhedron_labels_from_site(label)\n", - " print(\"Attached labels for\", label)\n", - " print(labels, coords)\n", + " # print()\n", + " # site_labels = cif.site_labels\n", + " # for label in site_labels:\n", + " # coords, labels = cif.get_polyhedron_labels_from_site(label)\n", + " # print(\"Attached labels for\", label)\n", + " # print(labels, coords)\n", "\n", "\n", "# TODO: Generate polyhedron .gif files\n", @@ -100,84 +67,8 @@ ] }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/imac/miniconda3/envs/cifkit-test/lib/python3.12/site-packages/pyvista/jupyter/notebook.py:34: UserWarning: Failed to use notebook backend: \n", - "\n", - "No module named 'trame'\n", - "\n", - "Falling back to a static output.\n", - " warnings.warn(\n" - ] - }, - { - "data": { - "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAMABAADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKhu7y1sLV7m8uYba3TG6WZwiLk4GSeByQPxoGk27ImoryvXvjXp1s7Q6FZPfttIFzMTFGGwNpCkbmGScg7enB5zXFXvxa8YXk6yQ3lvZKF2mO3tlKk5PP7zcc/jjjpXPPFU49bnr4fIcbWV+XlXn/Vz6Jor53sfiz4wtJ2kmvLe9UrtEdxbqFByOfk2nP4456V22g/GnT7l1h1yyexbaM3EJMsZbB3ErjcoyBgDd15PGaUMVSlpexVfIMdRXNy8y8tfw3PUqKhtLy2v7ZLmzuIbiB87ZYXDq2Dg4I4PIIqauk8Zpp2YUUUUCCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAq6jqNnpGnT39/cJb2sC7pJH6Af1JOAAOSSAOa+ZvFPjfV/GN0TeyeVYpIXgs0+5HxgZOMu2O59TgAHFdZ8b/ABP9r1e28NQN+6ssXFzx1lZfkHI7I2cg4Pmc8rXl8Z4rz8VVbfKj6/IcBCMVXqLV7eX/AA5OoFWra1lupPLhTewGcZA4qqrVt+HDm/k/65H+Yripw55qL6n0+LxLw2GnWiruKIf7Fv8A/nh/4+v+NIdEvz/y7/8Aj6/41ztvNey6ZqGot4kuIJ7aZxHA8xIfGCAAT3zjpXWweKbe28P2F7qbFbi5TiKNcs5zjIH6/jXofUafd/18j498V4z+SP3P/wCSNTwrrPifwjcg2Ufm2TyB57N3XZJxg4PVTjuPQZBAxXtv/CbeHf8AoIf+QZP/AImvCtJ8R6frErwwGSO4QZaGZNrY9axtJ8RWmneGxe3E9/cxNdmHfNhnBIz6/d4rppU1TVkzxsbjZYyftJxSfkmr+urPo7/hNvDv/QQ/8gyf/E0f8Jt4d/6CH/kGT/4mvArDxdpmoX6WcfnxySf6oyx7RJ9P/r1leG9ekvPFGpwSC9aOVgYUkyVhAzkEZ+XPtWhxH0l/wm3h3/oIf+QZP/iaP+E28O/9BD/yDJ/8TXz345uri08O+bbTywyeco3xuVOOe4rM0K7u7XxTDp8Wstq9pLCXkctv8o4OOcnuAOvegD6vsr621C2FxaSrLESQGHqKsVx/w4/5F64/6+2/9ASuwoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA+M9Q1P+2Nc1DVPK8n7bcyXHl7t2zexbGcDOM9cClRqy7Z8ACryPXlVVqfe4GolBIuK1bvho51GT/rkf5iucV619CvoLK+aSd9qGMrnBPOQe30qKVlUTZ049yqYOpCCu2it4R0DS9Ut7y5vbQTSpduqkswGMA4wDg9TV/W0bR/FNnrMlo81gkHknylyYDzg47Dn+dbv9v6Z/z9f+Q2/wAKT/hINL/5+v8AyG3+Fer7WH8yPg/qOK/59y+5nP2s58ReMLPU7G2ljtLSNhJcSJt8wkEBR69f51zgAbwDACMg6rgj/gJr0M+IdKH/AC9f+Q2/wqNvE+joMteY/wC2b/4UKpB9SXhMRHem/uZleK1A1zw2QACLsAY9MpS+HP8AkbfEf/XSP/2avS/+EJ8Rf9A//wAjR/8AxVH/AAhPiL/oH/8AkaP/AOKqznPNfiD/AMiz/wBt0/rWHYGxu/EumyeGrS4gWNs3bnIQpxxyT2z+lezf8IT4i/6B/wD5Gj/+Ko/4QnxF/wBA/wD8jR//ABVAHX/Dj/kXrj/r7b/0BK7Cuf8AB+kXOi6KYLtQs0kpkKhgcZAGOPpXQUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAfJPxN0ibRPiPrMUhdluJzdxu0ZQOsvz8eoBLLkdSp6dBzSS19L/FrwIvivw81/ZQp/a9gpkjYRlnniAJMI28kk8rweeBjcTXzCDXHVhZn0eAxPNTVt0XVlqUSVnhyKcJTWDpnrQxdty/5lIZKpedSebS9mW8Yi08vFdF8NtLm1z4jaNDEXVLedbuWRYy4RYvn59ASFXJ6Fh16HkGcmvp34SeBF8KeHlv72FP7Yv1EkjGNleCIgEQndyCDy3A54OdoNb0aep5WY421NrueiUUUV2nzAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXlXxF+D9rr/2vWdCH2fWH/ePb5Cw3Lc7v91245zgkcgFi1eq0UnFNWZpTqypy5os+KtX0fUtBv2sdVsprS5XJ2SrjcMkblPRlyDhhkHHBqhmvt28srTUbR7S+tYbq2kxvhnjDo2DkZU8HkA/hXJ3vwn8DX929zN4fhWR8ZEEskKcDHCIwUdOw96xdHsejHMl9pHyduq9pGj6lr1+tjpVlNd3LY+SJc7RkDcx6KuSMscAZ5NfUdl8J/A1hdpcw+H4WkTOBPLJMnIxyjsVPXuPeuss7K0060S0sbWG1to87IYIwiLk5OFHA5JP40Kj3CeYr7KPMPh18H7XQPsms66PtGsJ+8S3yGhtm42/7zrzznAJ4BKhq9WoorZRSVkedUqSqS5pMKKKKZmFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA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441TQdMN4+o30rFgiR/anXcT789smodOs4dP0+C1twRFGvygnJ55/rXF+JNQe78W21vFYz30Gn/PLDChbLnnnAPA+X9aAPRNM8W6pqOn299Dqt8FlUNg3DHB7g884PFew+Fbye/8NWdzcPvlYMGY9ThiMn34r5j8CXrwy3ujzwywNG3nQxTKQwQ9Qc/gfxNfSngn/kULH/tp/wCjGoA6CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApk00VtBJPPKkUMSl5JHYKqKBkkk8AAd6fXm3xs12XSvBC2dtcJHNqM4gdd5EhhALOVwQcZCqeow+D1FKT5Vc0o03UqKC6nkPjXxfP4z8RSXpMyWMfyWdvIw/dpxk4HG5iMnr2GSAKxEqnE3FWVavGqtyd2fpOChClTUILRFha19b1aPSdStrC20OO9lnQuoUhTxnjG056Viq1W/EyXr+NNJXTpIo7swv5bS/dH3s54PbNdGBinzXXY8biivOKpKEmvi2+Rq6HqljrEk9vJpi2l5B/rIJIwSB65wK2fsNp/z6wf9+xXH3djqXh7StV1u4uln1S4Cx741+WNSQMjge3bsKivdAg07w7/AG3b6pc/bljWX7QZciQnHH45r0OSPY+R+s1v5397OytdVvdH1pbLTbeS1guI98tzby+XyN2AVHX8/wCKtv8At3WP+grff+BD/wCNec29zJe+NNCupV2yS6YHYe5DmsfRNAh1Hwre38txcCWAyGBVfCoVXOce5qkrbGUpOTvJ3Z6RrPjfWNJnsI/t19L9rnEOftbrsyRz3z1rW/t3WP8AoK33/gQ/+NeRX8K6tpfhm8vC8k9xKLaRi3LIHI/P3r0dYPIsxBB8uyPZHntgYFAijf8AxK1WG/ksdNm1XUbiLiURXDhUPpnmrOjfEPUdSu2tJb3U7O+QbjbzzPkj2yefyrnPAEkMemXFo2Evo52M6N9/0z/SuiN5pzakLbzYGvgOE4LgY/MUAe5+Fbye/wDDVnc3D75WDBmPU4YjJ9+K2K5/wT/yKFj/ANtP/RjV0FABRRRQ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UjeL1Jllp4l96pZpdx9az5EdscTJFwy+9Mab3qruPrT4YZbmeOCCN5ZpWCRxxqWZ2JwAAOSSe1CggliZFqwsb7WtSg07Trd7i7uG2RxJ1J/kABkkngAEnivsDwzoNv4Y8NWGjWzbo7WIKXwRvcnLtgk4yxY4zxnArivhf8L4vCUCatqyJLrsq8DIZbRSOVU9C5HBYfQcZLel12UocqPnMdivbSsnogooorU4AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDlPFXw58N+L90uoWXlXhx/plqRHN/D1OCG4UD5gcDOMV5Fq/7P8Ar1rvfStUsr+NYi22VWgkZxn5VHzLzxglhyecYzX0RRUuEXub08TVpq0XofKX/CnvH3/QB/8AJyD/AOLrodM+AHiO5e3bUdR0+yhkXdIELSyxHGdu3AUnOAcPjqQT3+jKKn2UTV46qzkPCPw18O+DXeaxge5u2bct1ebXljGCNqEKAowTnAyc8kjGOvooq0ktjllOU3eTuFFFFMkKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuQ8W/Dbw74ydJr6B7a7VtzXVntSWQYA2uSpDDAGMjIxwQM56+ik0nuVGcoO8XY+c9T+APiO2e4bTtR0+9hRd0YctFLKcZ27cFQc5Ay+OhJHbnv+FPePv+gD/wCTkH/xdfVtFR7KJ1LHVkfO2kfs/wCvXWx9V1SysI2iDbYlaeRXOPlYfKvHOSGPI4znNeveFfhz4a8IbZdPsvNvBn/TLoiSb+LocALwxHygZGM5rq6KpQitjKpiatRWk9AoooqjAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/9k=", - "image/png": "iVBORw0KGgoAAAANSUhEUgAABAAAAAMACAIAAAA12IJaAABeqUlEQVR4Ae3deawtWX0v9toNdAPd0M1Mg4LMGEM3gxhsZtCjMSQ0bozx8CKZCFmWkz+CgkRk/xEJK1KSB7EURCSSEOXxTByekXn9mBoMtC0cM09iBmMag81gwAwNdAPdNDffe36c5bp733vr3O5779l7rU9pq87atWrXrvVZtddav6ra+6yOHDkymQgQIECAAAECBAgQGEPgnDGKqZQECBAgQIAAAQIECBwVEAA4DggQIECAAAECBAgMJCAAGKiyFZUAAQIECBAgQICAAMAxQIAAAQIECBAgQGAgAQHAQJWtqAQIECBAgAABAgQEAI4BAgQIECBAgAABAgMJCAAGqmxFJUCAAAECBAgQICAAcAwQIECAAAECBAgQGEhAADBQZSsqAQIECBAgQIAAAQGAY4AAAQIECBAgQIDAQAICgIEqW1EJECBAgAABAgQICAAcAwQIECBAgAABAgQGEhAADFTZikqAAAECBAgQIEBAAOAYIECAAAECBAgQIDCQgABgoMpWVAIECBAgQIAAAQICAMcAAQIECBAgQIAAgYEEBAADVbaiEiBAgAABAgQIEBAAOAYIECBAgAABAgQIDCQgABioshWVAAECBAgQIECAgADAMUCAAAECBAgQIEBgIAEBwECVragECBAgQIAAAQIEBACOAQIECBAgQIAAAQIDCQgABqpsRSVAgAABAgQIECAgAHAMECBAgAABAgQIEBhIQAAwUGUrKgECBAgQIECAAAEBgGOAAAECBAgQIECAwEACAoCBKltRCRAgQIAAAQIECAgAHAMECBAgQIAAAQIEBhIQAAxU2YpKgAABAgQIECBAQADgGCBAgAABAgQIECAwkIAAYKDKVlQCBAgQIECAAAECAgDHAAECBAgQIECAAIGBBAQAA1W2ohIgQIAAAQIECBAQADgGCBAgQIAAAQIECAwkIAAYqLIVlQABAgQIECBAgIAAwDFAgAABAgQIECBAYCABAcBAla2oBAgQIECAAAECBAQAjgECBAgQIECAAAECAwkIAAaqbEUlQIAAAQIECBAgIABwDBAgQIAAAQIECBAYSEAAMFBlKyoBAgQIECBAgAABAYBjgAABAgQIECBAgMBAAgKAgSpbUQkQIECAAAECBAgIABwDBAgQIECAAAECBAYSEAAMVNmKSoAAAQIECBAgQEAA4BggQIAAAQIECBAgMJCAAGCgylZUAgQIECBAgAABAgIAxwABAgQIECBAgACBgQQEAANVtqISIECAAAECBAgQEAA4BggQIECAAAECBAgMJCAAGKiyFZUAAQIECBAgQICAAMAxQIAAAQIECBAgQGAgAQHAQJWtqAQIECBAgAABAgQEAI4BAgQIECBAgAABAgMJCAAGqmxFJUCAAAECBAgQICAAcAwQIECAAAECBAgQGEhAADBQZSsqAQIECBAgQIAAAQGAY4AAAQIECBAgQIDAQAICgIEqW1EJECBAgAABAgQICAAcAwQIECBAgAABAgQGEhAADFTZikqAAAECBAgQIEBAAOAYIECAAAECBAgQIDCQgABgoMpWVAIECBAgQIAAAQICAMcAAQIECBAgQIAAgYEEBAADVbaiEiBAgAABAgQIEBAAOAYIECBAgAABAgQIDCQgABioshWVAAECBAgQIECAgADAMUCAAAECBAgQIEBgIAEBwECVragECBAgQIAAAQIEBACOAQIECBAgQIAAAQIDCQgABqpsRSVAgAABAgQIECAgAHAMECBAgAABAgQIEBhIQAAwUGUrKgECBAgQIECAAAEBgGOAAAECBAgQIECAwEACAoCBKltRCRAgQIAAAQIECAgAHAMECBAgQIAAAQIEBhIQAAxU2YpKgAABAgQIECBAQADgGCBAgAABAgQIECAwkIAAYKDKVlQCBAgQIECAAAECAgDHAAECBAgQIECAAIGBBAQAA1W2ohIgQIAAAQIECBAQADgGCBAgQIAAAQIECAwkIAAYqLIVlQABAgQIECBAgIAAwDFAgAABAgQIECBAYCABAcBAla2oBAgQIECAAAECBAQAjgECBAgQIECAAAECAwkIAAaqbEUlQIAAAQIECBAgIABwDBAgQIAAAQIECBAYSEAAMFBlKyoBAgQIECBAgAABAYBjgAABAgQIECBAgMBAAgKAgSpbUQkQIECAAAECBAgIABwDBAgQIECAAAECBAYSEAAMVNmKSoAAAQIECBAgQEAA4BggQIAAAQIECBAgMJCAAGCgylZUAgQIECBAgAABAgIAxwABAgQIECBAgACBgQQEAANVtqISIECAAAECBAgQEAA4BggQIECAAAECBAgMJCAAGKiyFZUAAQIECBAgQICAAMAxQIAAAQIECBAgQGAgAQHAQJWtqAQIECBAgAABAgQEAI4BAgQIECBAgAABAgMJCAAGqmxFJUCAAAECBAgQICAAcAwQIECAAAECBAgQGEhAADBQZSsqAQIECBAgQIAAAQGAY4AAAQIECBAgQIDAQAICgIEqW1EJECBAgAABAgQICAAcAwQIECBAgAABAgQGEhAADFTZikqAAAECBAgQIEBAAOAYIECAAAECBAgQIDCQgABgoMpWVAIECBAgQIAAAQICAMcAAQIECBAgQIAAgYEEBAADVbaiEiBAgAABAgQIEBAAOAYIECBAgAABAgQIDCQgABioshWVAAECBAgQIECAgADAMUCAAAECBAgQIEBgIAEBwECVragECBAgQIAAAQIEBACOAQIECBAgQIAAAQIDCQgABqpsRSVAgAABAgQIECAgAHAMECBAgAABAgQIEBhIQAAwUGUrKgECBAgQIECAAAEBgGOAAAECBAgQIECAwEACAoCBKltRCRAgQIAAAQIECAgAHAMECBAgQIAAAQIEBhIQAAxU2YpKgAABAgQIECBAQADgGCBAgAABAgQIECAwkIAAYKDKVlQCBAgQIECAAAECAgDHAAECBAgQIECAAIGBBAQAA1W2ohIgQIAAAQIECBAQADgGCBAgQIAAAQIECAwkIAAYqLIVlQABAgQIECBAgIAAwDFAgAABAgQIECBAYCABAcBAla2oBAgQIECAAAECBAQAjgECBAgQIECAAAECAwkIAAaqbEUlQIAAAQIECBAgIABwDBAgQIAAAQIECBAYSEAAMFBlKyoBAgQIECBAgAABAYBjgAABAgQIECBAgMBAAgKAgSpbUQkQIECAAAECBAgIABwDBAgQIECAAAECBAYSEAAMVNmKSoAAAQIECBAgQEAA4BggQIAAAQIECBAgMJCAAGCgylZUAgQIECBAgAABAgIAxwABAgQIECBAgACBgQQEAANVtqISIECAAAECBAgQEAA4BggQIECAAAECBAgMJCAAGKiyFZUAAQIECBAgQICAAMAxQIAAAQIECBAgQGAgAQHAQJWtqAQIECBAgAABAgQEAI4BAgQIECBAgAABAgMJCAAGqmxFJUCAAAECBAgQICAAcAwQIECAAAECBAgQGEhAADBQZSsqAQIECBAgQIAAAQGAY4AAAQIECBAgQIDAQAICgIEqW1EJECBAgAABAgQI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Xuk3IzcRo6kfgf9ptcoJg2o16mTAvL1YG+jn2z+b03EXbq62i0ve8pa37OJu22cCBAgQGEfgwmNH/60TX+vBA1L9dce99mal68c3TW72ElcAbjbd1r3wD1arex1v9N92tDUWSbR0cutpzdPEtNP/V1555Sc+8Yl6+TnnnHPuuefe/e53f9jDHvaoRz1qdSp3BL7sZS+7/vrr73e/+z3/+c9vO3PyxNVXX/3ud78767zwhS+8853vfPKVk/uzn/3s5S9/+fe///1LL730ec973uL6ViBAgAABAtsm8D+vVnfa+x7d5im8tquty05/XV15strCJHauE7/hhhs++MEPfu5zn/v2t7995MiRu93tbhls/NIv/dI97pFrIaYzJSAAOFOyZ3+7F85G/2kX8tic5m1EcvO0WpC15ZsvzAj7xz/+8T/sTfmIPuMZz9hc5xCX/O3f/m1G/9mBz372sz/84Q8vuCBfPzYRIECAAIGdEfjDvZt/Miyr23fXOvF5N93SVbb2tBLHLfDWduJf+tKX3vjGN373u99tu/2Pe9NHP/rRhz/84Rls3O52ubPBdPoFBACn3/RQtpjT/3ffP20wH/2vtQvzp9nP/PTvQQKAnFbPFYAf/OAHf//3f59Xve9977v3ve+dhQcs6eMe97gbb7zxICfyD7jBzdU+9KEP1cKbbroprcaTn/zkzXUsIUCAAAECWyuQE1c1+p934tnbecc9T6cHz4WCzRX2lh0z29pO/OMf//gb3vCGnPXP7t761rfOKf/zzz//G9/4xrXXXpuFH/vYx5LOvQNigGOq8zQ9EQCcJsjD3kx+r7edM2inDY5+pGZtx3y4X+m0HWsLj1uOZz7zmXVOPZ/GfFazzmc+85mDBwD3uc99Mi4/cx/gXJGoyCQ3JqXJ+MhHPpIf/EnEctyyWEiAAAECBLZN4MV7/70n/fja6L/2cz7ur3SN/tu8ncvLks1pOzvxjPLf+ta3ptdO350ThU972tNudasAHJ3SrWewkSsBX//619/2trc997nPreXmp1FAAHAaMQ9tU//tXsNRA9756L81GTXKT1ZrGpJuo/+2sJacpBgPechDKgDIbTZtte985zvvec97vva1ryVxl7vc5V73utcTnvCEO93pTm2F173udfPvANRXAjJGT6z/gQ984Fvf+taFF16YIOGyyy677W3zP0+mV77yld/8Zv7/4NHpFa94xeKXBz784Q/X+YPHPOYxuY8wbcrnP//5X/zFX6wtmBMgQIAAgS0XSOfXzuLVrraBfvro9M7taeW2HjxP1zr3k5R0qzrxN7/5zT/5yU+yt4lPfvmXf3m+2xlL/M7v/E5O51Xn/tOf/jTXB+YrSN9yAaC33PDwt3DerOFog/7WWGw2HNnjtBdZIVlJzKe1p/OspDOwriV3uEP+z+/RKQPud77znbnDp54mDMiUi3q5b+/Rj350LTzuPDfqJCqorAz3M335y19+wQtecPvb52LGKUx561yXyAsuvvjipz71qQkGcqdj7ggSAJwColUJECBA4PAE/uu9u//TI7dpsytP77zWQbcl8+XzdNtaS2xPJ56v7V1zzTXZsZwKzPd92x62RH53JJcF2lOJ0y4gADjtpGd7gy/Y+/Gf+synyciUeU4YzB+bLUKWbC6skGCzAG9/+9tzhe573/veV77ylcp98IMfnMQXvvCFXJtLgJ7Ldlly17veNeP4fJE/g/KrrroqEXx+en9za7Uko//zzjvvoQ99aG4Nym8N5bR9LgVk4P6UpzzlSU96Usb01TRkTH/yH+//1Kc+9aMf/SjbzKYSPNz//vf/u7/7uy9+8Yu5gJgdONG7W06AAAECBLZEIKf/2/m4+dC/9ePVZc977ayWpxUzzJfP0610W9iJ51xhnd1/wAMekAFG21WJsyYgADhr1GfqjfL1+GoCqtWo9iLp1nDcdOw712qt4ajMWjg//TB/0Sc/+cn500c+8pH5AkBOtOd2oHyAE6bnzH1OwNc6+aGg17zmNblgl9wXvehF8xeupfPNnnyZOAuzwdzqk00leEgAkKF8vvdTAUB+dfTk3x7OKf9sIc1H/ZvAvDYBQDaV5dv2U0VrxfeUAAECBAj82mp1/73RfHXE8+679ePpsudj5KxTAUMSNbXXHrcf38JOvM7cZefnNwzvl8bfsyFw3EPlbLyx9zhdArlrsKb2+W9NxmYiwUAWtnkSla416+n+9o75mxF2TthnlP/0pz/98ssvT15O2Nc3AR7/+Me30X+W527+3IufRE7q51sBx2xl9iS/8luj/yzL579G+dddd91sleVkTiF89atfzXoJQv76r//6TW96U7u+mWsI7cak5Q1ZgwABAgQIHIbAhftn8fLm6ccP0nFXP9668vlLsvC407Z14vm1n9rPf/7nfz7uDlt4pgVcATjTwmd2+8/bu/8n71Gj/9YKpAlIbFdtRNuDFiHkRELSNa/cypovaa9K4sUvfvHmL+vnbp9aZ/NfdbSbdnIi/0Tn79uHvzaSu3dy006uG8zfdzHdfv0zXyTKlwrm6+fsQv5z+CMe8Yj5QmkCBAgQILBVAm0c1nrwSlQ/nnm65jasn/fj1WVnSab58s3SbWEnnt8LSUySy/W5lzi/E9h+/2dz5y05QwKuAJwh2LO02dvsj+Nbw5FmorUdSc+ftnVaIk1GpStR8wPuev5XX62ZUf7aS9qSts7aCnmaT/584c348Ocfk+ULAPONrKXzBeW1JZ4SIECAAIGtEqi+sPXLlai+u83nvfnamq0fb735AUvXOujWZbcXtiVtnZbVErewE89ZxQc96EHZWq4AvOtd72qbbYl08bkruKZTPTnYNiJxEoEWeZ5kHVnbK5AArn34q4GoeZbXFYCap33JI61DzdeyagtZmMTBp9zDk7P4uWnnve99b74B3K4D5J6cOjF/xzve8Yx+Dbfd5JM7jp71rGfN9/zVr351flPo6A8Sfe1rOc0wz5ImQIAAAQJbIvDM1eo/2T8T14b+6cdzc28b6FfvXD112+0szFQL07MnUY+86oDToXfiuZ04XxrM5fq/+Zu/ye+C/Mqv/EruNK6d/6d/+qcrr7yybjTIb/r5Wb8D1ukprSYAOCWubVy5tRFJtCagJbKw2o4kjjv6z/L5lHUOOOU/bV1xxRWvfe1rb7jhhle96lX5WnCG+/liQG68yfeDc27gOc95ztoZggNu+YCr1dd/s/Lm740+6lGPSgCQrIQi2ckDbtBqBAgQIEDgbArkMn7663TE7VHddz1t6XTN9agl9ZLqrzOf9+MVGBykCIfeief3xJ/97Ge//vWvz5ghP/mfHxDPmcScOsz1h/YFwosuumjtBN9Bimadgwgc/FA5yNasc7YFqhVoLUUS8yXzp2vL6yXthS03iYNPuX6X/9+Rf8+RG/jy0f2rv/qr/NRAPsn5Sm4i+/wDr4Nv6lTXzL/+rW8O5TvH7eJD20j+10n94+H2I6EtS4IAAQIECGyJQA3fj9sXt3553l+fKJ2V2/oHL9ohduK1k+msf/d3f7duNMp9PrmD4LOf/Wwb/ad//73f+732f4cOXi5rHkTAFYCDKG3pOv/rS1+atqA+9vXJb/PWEGSFOm1QpwqqJJWu5VnSniadF57S9NjHPvaBD3xg+0/A+VcA+W2f/Jff/HPfU9rOqa7cvv67efo/m0pM8vCHP/z9739//Zsw/0zkVHmtT4AAAQJnQSB9bnvU4L6ezgf61Vm3Lrv2qj1tPXheeDPO6R5WJ95sM2b4/d///VzSz9A/5/Xykx4565/bk3IlP//Yp60mcdoFjn4F+7Rv1AbPjsDLX/rS9/3hH140TRdMU/59bv6TSB7nTlMuKdYj4V0euZUwj7QLNU+iGo75kqTrkay3/tEfnZ39P/vv8pKXvOTsv6l3JECAAAECxxW4fLW66zTdca8Tz3/1SSeeu+BbPz7vxFtXns46PXWbt569deJv67cTj6F+/LgH0s1YmKPLtMMCid7m5wnyzaH506SzZD5l/Tyq4UhibaqstYWeEiBAgAABAmdCIN3uZq9dXwLOPJ115nXOLvNMWb966hP117XamdhV2+xMQACw2xXaGo60EZWeNxyt1Zi3CNV8ZElalppqSWtT9hf7S4AAAQIECJxBgdZxbyba6D/dek3pplsiudV3tyX1dN7d76/uL4HjCAgAjoOyK4vyOU+7UI+0HS2dRGs4WltQDUfm1WpkeS1JYavVqHlbf1cQDr6fl1xyycFXtiYBAgQIEDjTAvOOe55OT51HeuTNTjmddfXgNc8ezjvxvKrjST9+Giu370PlNEJt6abyj3OryWiJeQty89IPuOaaLS2t3SJAgAABAh0JZOx+GrvvdPrZmk68owPkDBbFFYAziHsWNp2Pej3qY19fEsqSOm3QzhykiUlW5nVSoc4r1DmDWl7pzPOSC77+9foHXt++6KKzUISz8xb5WdL81MDZeS/vQoAAAQIEDiKQPrf140lkTJZ59dTVj883Mu/Eq7/OPFPm7dFrJ55i6sf3avu0zQQAp43yUDa01nZUANDajrZLWZ6pNRC5XyjrZF6j/5rXwiy//dVX/+LVV2fLmWq+lzz68kzzjdTTvcXHLM+m8qjrD9W03ThNefxkmn48TddP0w/y37+n6U/9AlXZmRMgQIDAkAJrnXh6zPTIdUYvWWtdcHXW1Qunk01uuuw8zXzej9/u6qv/071OvF6+tpEwty0kUU/bwpZVnXjm1Ylnnk78hr1OPP34D6fp2mm65N/8m//mD/5gbxtmuyfgZ0B3r87me/ys1Sq/+HnBNJ2///Nh7RfEEtvVI+1CPdJGtEdahDzWlmdJVqisms/fK+lqGubzWmG+JO1FPdYCgDQc1XZctxcAfHOa/lwAsObrKQECBAiMJPCM1Sq9dn79M/34iX4GNF35WmddPXXr0JPb0tV31wqBzNO1aa2/rtwszFRZrRNPokKRigHqLF5O5P1omtKPf3ea/q1OvPh2c57jyrTDAvXZzscyj2ogMl8bu7dPe1qE5OYjXU1D5pWVRHskt16+tpEyyvqZMs9q9dq2vJ5WVnLzmAcArfmoXU0kkBbERIAAAQIECKSLTOdYA/3qoNe64OphW09difSzSaRbT27LyguTTlYSmWo+F26ddfXXlZV0psqqHrzmawFA7Wd2NZ14IgHTTgsIAHa6+o7ufD7e+YhW25F5PvlZMv/Mt097NQrVTNQ6aw1He23lzjdSTG1TLbG5vLUdLQDIXrVHWo1qOH5YrzQnQIAAAQKjCtRIPb1tesYKANIvV1/cSFqHW913m+dVSWcL9ZJaXgszzyNTzdumkmhbSyKvrSnpTJW11olXDNA68SSqH8+NQKadFhAA7HT1Hf24ZsonPB/I1gS0D3x9mNu8tRpJZJ08kjVvO7KkZdVGat6M2qbqhbU86UyVla1VVo3+T9JwvMulw+IzJ0CAAIFRBd555MgVq6M9bbrOjK3Tj+eR5/Wo5a17bb189dQ1z8KskPR8YdvC0U3PpqyZqW2wnrYltTzzdOXpvmu+eQG/zuLl63ymnRYQAOx09R39iNaUD3mLATY/8PkY55HWoZqPrFAtRRZmSWW15qNys9naTs3Xmom8pFqKevfWalTDkdzNAKDOGWRe3wP++X77Q4AAAQIEBhZIv5l+No/0m4kBqnee97yth60uu1Zo8+p2qweveW2t5nGtTSWRNWs+3+DesmOW513qUf34PACofry+BpC0aacFBAA7XX3TXxw58mt7Jw+qGPlAto96llS7kDquD/N8rF9NQxqLZGWerCxZazuyhbWt1Tar7cgLa2ptSpbUOybRAoA0Z2k+WquRhiMBQBaaCBAgQIAAgeo6yyHdZfXO9bR623Ti1be2LjuJ6rIzz8ur727z2kKbz4Vrg/N5cvO05rU8G6xH+vHsT4Ul6bXn/Xi+xfeXLuPvue3uTACwu3X38z3PBzVTfdTz6Z3HAO1D3j7Paw1Eniar5tlC5c5bjaTbtNlGVFZbnk0lXe+1duagNRwZ/afheLuGo7FKECBAgMDAAm85cuTX907kVeeb3jM9Zk3zTjzDtdZlJ1FddubViVf3vdaJ1wb3N3b0b9tgS6y90VonXjFARv955PxdPdKJZ7lp1wUEALteg0cD9HP3C5FPe6a0HfkMZ2oj8lRz0vnE1i1A1XZU81FtR7Jaw9Fys4Xa4N7GjjlJUFtuy1tTkuX1yAbzyL7lUaP/DP1r9F/7Vq81J0CAAAECgwuk32xTut08rRigDcerE1+7jF+d9bxnb/14NlKPbHatH2/9dSWyQnXK9bR14km0Tryd/q9+PPuWnt206wICgF2vwemqvZMH9QFOYeoznw9nluQDnHlrONJ25PNcDUQ1HJmvtR2t1VhrO2r7mc8febv58nq7ajWy2Wo7WsNRdw3Wwp1HVwACBAgQIHCaBNIzVmfatpendS6vdazpyrNaO4vXOvEksk7m9UjfXVmtE882k27bT6IeeVWmWt4WJlGdeM3nZ/HqDt7Mk+Uy/h7ebs8EALtdf7X3aRTWKjKf9nxE03zUZzi5aTWq4ci8NRBpJvI0Lz9u25GNZ802VQORp9lmS+fpWsNR75htVsNRAUCN/uuFb3P/TzOVIECAAIHhBd505MjzVqt0pmtTOtD0m3mkE8+89deb/XjrxOej/+rBWz9e229ddjZYU1ueJUlnnh68HvMAIKf/05VnhWSZOhBYGzd2UKIRi/CGI0d+Y6PtqM98Pr35MOeR9iKPGvFXA1HzWph0PfKqWr7WcIR1rY2op7U86TzqjVrbMW846pxBsrLQRIAAAQIECMwFMqrOgKx1rK0LTr/ZzuXN+/HWWafL3uzHk9se7V1q49VfV5ddWW1568SrH69OvJ3Fq+47WbnvoG1TYncFBAC7W3fH7Hk+mdUE5HNZDUdlJ50l+QDXCpvNxFrbkfWPGwC0BiKJ9qi3qKdpFJKoVqOdOaiGI2/d1sm3nY7Zb08IECBAgMDwAv/xyJHfXK3S/6aPrI67deVJVK/aAoCsVo/qspOed+5Z2B5xTbqm6n1bd9w641rSlrd+PH13Hgk/KgLJCsnKElMfAgKAPupxqrajfZ43S5WsFga0hqPajnnDkazWcLRWo7ZWG68moL1REu2RpmGt4UhLkSWZ6lXZARMBAgQIECCwKZBxdrrj1r3WCvOOOGFAetU23K8ePPPNTry68mxh/vI8bf11JWpJzdNZV0+dd0k6b5RHeu3qxNs6b3YWLxZdTKsj6rKLiqxC/OvVKg1BHtUuZOHmhz8L8yGv1qHm1Xa0V+Ul7VFbyPo1VZNRzcR8SVteZylqXgszz/pZkqYtUcr+lvwlQIAAAQIEjhHI3bz5Wb/qlOcd8Xyl1o9WD57Vav08bY+11+ZpvSrz+aM2W0uqZ6/+Ol12Rv9tzVqYJa/Xic9rYsfTrgDseAUeu/sJ1vM5r0YhH92k16ZqBTKvj3qts9Z2JLc95i/PypnaCytr3kBUG1HL2zwr1HKj/2YiQYAAAQIENgX+/MiR314d/acAeWTKvLrpzTWzPCPyTEmk05/343lVDQNqI/PXZuV6pF+uKU8zVc+eeT2ypJbP16+321vdrAcBAUAPtdjKkOj8t/ZuIsySfP5r2mwC9nOO/q2Pfa1TTca84WivnbcFeUlNrWnYX7C+PCtUa5JfDzARIECAAAECJxdId3n7vaF/+uL0oemFa775qsrK8upn87QerROvp+2FrcuuRJYnUfNK7D37l1nLzfZzTSA/N/IveVK7L+AWoN2vw40S5PxBArucD2jNQRI1tY9vEu2zXVm1Tltz/xVH/87XrBfOV157SVu5mqS0GvkJIA3H3FOaAAECBAicSCA/CXre/kn99LDzDjcvaZ1spVunvLba2sbbq2r95G5uub2k1sm8+vHcXODmn4bTTSKBoqk3gT87ciTD7nxu22e4JaqoeTpP1NP5fD//6N/58qTr6XyFebqt3Eb/aTiM/udE0gQIECBA4CQCGW3nW3PzfjwrV/97ki649b9r69QLawtrb9pe0pbXyjWvftyt/w2ns4QrAJ1V6L8UJ18IznWAdikwGXV6oD7weTr/nJ/kTECt2dZPoqbjnmxo26yGI03YlS4a7ov5S4AAAQIEDiiQXwW9zbEX8/PCeT9evXl1u7XN1pVvvsV85aTbmrXB+fq1wTb6z9cS5rnS3QgIALqpyuMUpH4UqMUA7XPeGoK8pj7qSVRuW2e+ubX1a+UTrZmV03Dk1EXO/Rv9zxmlCRAgQIDAwQXyo0AVA1Q/nhe2nrf1yy1xkk48L2yrVeJEKye3HunHc+7f6P/glbVzawoAdq7KTm2H853gzesA9fnPhupzXokTNQeVO1/5RGu2ViOj/5z7d+dP0EwECBAgQOBmC/z6sT8Mmu1UF1z9eJtXIlmVu/l2B1mz1mnn/t33v8nY0xIBQE+1efyy5BTC/DvB85U2W4TkrjUfbZ1kVbpW2FwtuXXu3zmDObI0AQIECBC4JQL5bY/5D3u0TbUOet47J3ezg87CrFOr1Qqb69QKOYWXc/8u4DfkXhMCgF5r9phyXbFa3XZ2K+E8r5qD+tinOVhrEWrNxXXq5XXFUKsx55UmQIAAAQK3XCDn8urH/jd76uqCM68efLMfX+vEszPHXadO4eV3SN/ivv9bXmFbvwUBwNZX0enbwVxJzKWAajvmH/6Ttx2LDUdWqCuG/0GTcfoqy5YIECBAgMCaQIUB1Y+3rIN001m5+vq117bldQrPvbtNtfuEAKD7Kl4v4HNnVxJbXrUL9XQeG9SSlltZNW8tTt3xf5XRf9OUIECAAAECZ0bg2Xv/JaB9LbjepPXIeXrcTjzLa521frz69/Tjhv5nprq2d6sCgO2tmzO6Z7+6fzGxvUtrPtZah6xQWUnMm5UsTJPxJuP+JihBgAABAgTOlsBzVqvNMCBd82Ynnj2qfnytE8/C3O7vhp+zVWPb9T4CgO2qj7O/N886tgWpNmJtN1qDUstzoTA/8fkOQ/81Jk8JECBAgMDZFXjm3k+FtpF9+uu1Lju7Uz37fJ3042/ViZ/dmtq2dxMAbFuNHOb+PG0vGMgeVGMx35Us+UuNxVxEmgABAgQIbJnAZatVBvqbnXh2M4P+v9KPb1l9HeLuCAAOEd9bEyBAgAABAgQIEDjbArl/zESAAAECBAgQIECAwCgCAoBRalo5CRAgQIAAAQIECERAAOAwIECAAAECBAgQIDCQgABgoMpWVAIECBAgQIAAAQICAMcAAQIECBAgQIAAgYEEBAADVbaiEiBAgAABAgQIEBAAOAYIECBAgAABAgQIDCQgABioshWVAAECBAgQIECAgADAMUCAAAECBAgQIEBgIAEBwECVragECBAgQIAAAQIEBACOAQIECBAgQIAAAQIDCQgABqpsRSVAgAABAgQIECAgAHAMECBAgAABAgQIEBhIQAAwUGUrKgECBAgQIECAAAEBgGOAAAECBAgQIECAwEACAoCBKltRCRAgQIAAAQIECAgAHAMECBAgQIAAAQIEBhIQAAxU2YpKgAABAgQIECBAQADgGCBAgAABAgQIECAwkIAAYKDKVlQCBAgQIECAAAECAgDHAAECBAgQIECAAIGBBAQAA1W2ohIgQIAAAQIECBAQADgGCBAgQIAAAQIECAwkIAAYqLIVlQABAgQIECBAgIAAwDFAgAABAgQIECBAYCABAcBAla2oBAgQIECAAAECBAQAjgECBAgQIECAAAECAwkIAAaqbEUlQIAAAQIECBAgIABwDBAgQIAAAQIECBAYSEAAMFBlKyoBAgQIECBAgAABAYBjgAABAgQIECBAgMBAAgKAgSpbUQkQIECAAAECBAgIABwDBAgQIECAAAECBAYSEAAMVNmKSoAAAQIECBAgQEAA4BggQIAAAQIECBAgMJCAAGCgylZUAgQIECBAgAABAgIAxwABAgQIECBAgACBgQQEAANVtqISIECAAAECBAgQEAA4BggQIECAAAECBAgMJCAAGKiyFZUAAQIECBAgQICAAMAxQIAAAQIECBAgQGAgAQHAQJWtqAQIECBAgAABAgQEAI4BAgQIECBAgAABAgMJCAAGqmxFJUCAAAECBAgQICAAcAwQIECAAAECBAgQGEhAADBQZSsqAQIECBAgQIAAAQGAY4AAAQIECBAgQIDAQAICgIEqW1EJECBAgAABAgQICAAcAwQIECBAgAABAgQGEhAADFTZikqAAAECBAgQIEBAAOAYIECAAAECBAgQIDCQgABgoMpWVAIECBAgQIAAAQICAMcAAQIECBAgQIAAgYEEBAADVbaiEiBAgAABAgQIEBAAOAYIECBAgAABAgQIDCQgABioshWVAAECBAgQIECAgADAMUCAAAECBAgQIEBgIAEBwECVragECBAgQIAAAQIEBACOAQIECBAgQIAAAQIDCQgABqpsRSVAgAABAgQIECAgAHAMECBAgAABAgQIEBhIQAAwUGUrKgECBAgQIECAAAEBgGOAAAECBAgQIECAwEACAoCBKltRCRAgQIAAAQIECAgAHAMECBAgQIAAAQIEBhIQAAxU2YpKgAABAgQIECBAQADgGCBAgAABAgQIECAwkIAAYKDKVlQCBAgQIECAAAECAgDHAAECBAgQIECAAIGBBAQAA1W2ohIgQIAAAQIECBAQADgGCBAgQIAAAQIECAwkIAAYqLIVlQABAgQIECBAgIAAwDFAgAABAgQIECBAYCABAcBAla2oBAgQIECAAAECBAQAjgECBAgQIECAAAECAwkIAAaqbEUlQIAAAQIECBAgIABwDBAgQIAAAQIECBAYSEAAMFBlKyoBAgQIECBAgAABAYBjgAABAgQIECBAgMBAAgKAgSpbUQkQIECAAAECBAgIABwDBAgQIECAAAECBAYSEAAMVNmKSoAAAQIECBAgQEAA4BggQIAAAQIECBAgMJCAAGCgylZUAgQIECBAgAABAgIAxwABAgQIECBAgACBgQQEAANVtqISIECAAAECBAgQEAA4BggQIECAAAECBAgMJCAAGKiyFZUAAQIECBAgQICAAMAxQIAAAQIECBAgQGAgAQHAQJWtqAQIECBAgAABAgQEAI4BAgQIECBAgAABAgMJCAAGqmxFJUCAAAECBAgQICAAcAwQIECAAAECBAgQGEhAADBQZSsqAQIECBAgQIAAAQGAY4AAAQIECBAgQIDAQAICgIEqW1EJECBAgAABAgQICAAcAwQIECBAgAABAgQGEhAADFTZikqAAAECBAgQIEBAAOAYIECAAAECBAgQIDCQgABgoMpWVAIECBAgQIAAAQICAMcAAQIECBAgQIAAgYEEBAADVbaiEiBAgAABAgQIEBAAOAYIECBAgAABAgQIDCQgABioshWVAAECBAgQIECAgADAMUCAAAECBAgQIEBgIAEBwECVragECBAgQIAAAQIEBACOAQIECBAgQIAAAQIDCQgABqpsRSVAgAABAgQIECAgAHAMECBAgAABAgQIEBhIQAAwUGUrKgECBAgQIECAAAEBgGOAAAECBAgQIECAwEACAoCBKltRCRAgQIAAAQIECAgAHAMECBAgQIAAAQIEBhIQAAxU2YpKgAABAgQIECBAQADgGCBAgAABAgQIECAwkIAAYKDKVlQCBAgQIECAAAECAgDHAAECBAgQIECAAIGBBAQAA1W2ohIgQIAAAQIECBAQADgGCBAgQIAAAQIECAwkIAAYqLIVlQABAgQIECBAgIAAwDFAgAABAgQIECBAYCABAcBAla2oBAgQIECAAAECBAQAjgECBAgQIECAAAECAwkIAAaqbEUlQIAAAQIECBAgIABwDBAgQIAAAQIECBAYSEAAMFBlKyoBAgQIECBAgAABAYBjgAABAgQIECBAgMBAAgKAgSpbUQkQIECAAAECBAgIABwDBAgQIECAAAECBAYSEAAMVNmKSoAAAQIECBAgQEAA4BggQIAAAQIECBAgMJCAAGCgylZUAgQIECBAgAABAgIAxwABAgQIECBAgACBgQQEAANVtqISIECAAAECBAgQEAA4BggQIECAAAECBAgMJCAAGKiyFZUAAQIECBAgQICAAMAxQIAAAQIECBAgQGAgAQHAQJWtqAQIECBAgAABAgQEAI4BAgQIECBAgAABAgMJCAAGqmxFJUCAAAECBAgQICAAcAwQIECAAAECBAgQGEhAADBQZSsqAQIECBAgQIAAAQGAY4AAAQIECBAgQIDAQAICgIEqW1EJECBAgAABAgQICAAcAwQIECBAgAABAgQGEhAADFTZikqAAAECBAgQIEBAAOAYIECAAAECBAgQIDCQgABgoMpWVAIECBAgQIAAAQICAMcAAQIECBAgQIAAgYEEBAADVbaiEiBAgAABAgQIEBAAOAYIECBAgAABAgQIDCQgABioshWVAAECBAgQIECAgADAMUCAAAECBAgQIEBgIAEBwECVragECBAgQIAAAQIEBACOAQIECBAgQIAAAQIDCQgABqpsRSVAgAABAgQIECAgAHAMECBAgAABAgQIEBhIQAAwUGUrKgECBAgQIECAAAEBgGOAAAECBAgQIECAwEACAoCBKltRCRAgQIAAAQIECAgAHAMECBAgQIAAAQIEBhIQAAxU2YpKgAABAgQIECBAQADgGCBAgAABAgQIECAwkIAAYKDKVlQCBAgQIECAAAECAgDHAAECBAgQIECAAIGBBAQAA1W2ohIgQIAAAQIECBAQADgGCBAgQIAAAQIECAwkIAAYqLIVlQABAgQIECBAgIAAwDFAgAABAgQIECBAYCABAcBAla2oBAgQIECAAAECBAQAjgECBAgQIECAAAECAwkIAAaqbEUlQIAAAQIECBAgIABwDBAgQIAAAQIECBAYSEAAMFBlKyoBAgQIECBAgAABAYBjgAABAgQIECBAgMBAAgKAgSpbUQkQIECAAAECBAgIABwDBAgQIECAAAECBAYSEAAMVNmKSoAAAQIECBAgQEAA4BggQIAAAQIECBAgMJCAAGCgylZUAgQIECBAgAABAgIAxwABAgQIECBAgACBgQQEAANVtqISIECAAAECBAgQEAA4BggQIECAAAECBAgMJCAAGKiyFZUAAQIECBAgQICAAMAxQIAAAQIECBAgQGAggf8fw15YmydVOZIAAAAASUVORK5CYII=", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import numpy as np\n", - "import pyvista as pv\n", - "pl = pv.Plotter()\n", - "points = np.array(\n", - " [[0.0, 0.0, 0.0], [1.0, 1.0, 0.0], [2.0, 0.0, 0.0]]\n", - ")\n", - "labels = ['Point A', 'Point B', 'Point C']\n", - "actor = pl.add_point_labels(\n", - " points,\n", - " labels,\n", - " italic=False,\n", - " text_color=\"black\"\n", - " font_size=20,\n", - " point_color='red',\n", - " point_size=100,\n", - " render_points_as_spheres=True,\n", - " always_visible=True,\n", - " shadow=False,\n", - ")\n", - "pl.camera_position = 'xy'\n", - "pl.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [] } ], diff --git a/setup.py b/setup.py index 18706d1..3c1968f 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ setup( name="cifkit", - version="0.20", + version="0.21", package_dir={"": "src"}, packages=find_packages(where="src"), install_requires=[], # List your dependencies here diff --git a/src/cifkit/figures/polyhedron.py b/src/cifkit/figures/polyhedron.py index e2012f6..a21e38f 100644 --- a/src/cifkit/figures/polyhedron.py +++ b/src/cifkit/figures/polyhedron.py @@ -34,7 +34,15 @@ def generate_color_mapping(labels): return color_map -def plot(points, vertex_labels, file_path, formula, is_displayed, output_dir=None): +def plot( + points, + vertex_labels, + file_path, + formula, + show_labels, + is_displayed, + output_dir=None, +): """ Generate and save a 3D plot of a molecular structure. """ @@ -46,7 +54,7 @@ def plot(points, vertex_labels, file_path, formula, is_displayed, output_dir=Non central_atom_coord = points[-1] central_atom_label = vertex_labels[-1] # Coordination numbers - coordination_number = len(points) - 1 + coordination_number = len(points) - 1 # Title title = f"Formula: {formula}, Central atom: {central_atom_label}, CN: {coordination_number},\n{file_path}" @@ -60,26 +68,26 @@ def plot(points, vertex_labels, file_path, formula, is_displayed, output_dir=Non sphere = pv.Sphere(radius=radius, center=point) plotter.add_mesh(sphere, color=label_colors[label]) - # Add labels with index - indexed_label = ( - f"{idx + 1}. {label}" # Creating a label with numbering - ) + # Creating a label with numbering + indexed_label = f"{idx + 1}. {label}" adjusted_point = point + [ 0.3, 0.3, 0.3, ] # Offset to avoid overlapping with the sphere - if idx != len(points) - 1: - plotter.add_point_labels( - adjusted_point, - [indexed_label], # Use the indexed label - font_size=50, - text_color=label_colors[label], - always_visible=True, - shape=None, - margin=0, - reset_camera=False, - ) + + if show_labels: + if idx != len(points) - 1: + plotter.add_point_labels( + adjusted_point, + [indexed_label], # Use the indexed label + font_size=50, + text_color=label_colors[label], + always_visible=True, + shape=None, + margin=0, + reset_camera=False, + ) delaunay = Delaunay(points) hull = ConvexHull(points) @@ -144,5 +152,3 @@ def plot(points, vertex_labels, file_path, formula, is_displayed, output_dir=Non """ # Save the screenshot plotter.screenshot(save_path) - - diff --git a/src/cifkit/models/cif.py b/src/cifkit/models/cif.py index 2aa5c6b..c78ab84 100644 --- a/src/cifkit/models/cif.py +++ b/src/cifkit/models/cif.py @@ -4,8 +4,10 @@ # Polyhedron import os +import logging from cifkit.figures import polyhedron from cifkit.utils.unit import round_dict_values +from cifkit.utils.log_messages import CifLog # Parser .cif file from cifkit.utils.cif_parser import ( @@ -96,12 +98,18 @@ def wrapper(self, *args, **kwargs): return wrapper -class Cif: - def __init__(self, file_path: str, display=True) -> None: +# Global logging +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s - %(levelname)s - %(message)s", +) + +class Cif: + def __init__(self, file_path: str, logging_enabled=False) -> None: self.file_path = file_path - if display: - print(f"Processing {self.file_path}") + self.logging_enabled = logging_enabled + """Initialize the Cif object with the file path.""" self.file_name = os.path.basename(file_path) self.file_name_without_ext = os.path.splitext(self.file_name)[0] @@ -110,15 +118,22 @@ def __init__(self, file_path: str, display=True) -> None: self._preprocess() self._load_data() + def _log_info(self, message): + """Log a formatted message if logging is enabled.""" + if self.logging_enabled: + formatted_message = message.format(file_path=self.file_path) + logging.info(formatted_message) + def _preprocess(self): """Preprocess each .cif file and check any error.""" + self._log_info(CifLog.PREPROCESSING.value) check_unique_atom_site_labels(self.file_path) remove_author_loop(self.file_path) preprocess_label_element_loop_values(self.file_path) def _load_data(self): """Load data from the .cif file and process it.""" - + self._log_info(CifLog.LOADING_DATA.value) self._block = get_cif_block(self.file_path) self._parse_cif_data() self._generate_supercell() @@ -162,6 +177,7 @@ def _generate_supercell(self): """ def compute_connections(self, cutoff_radius=10.0): + self._log_info(CifLog.COMPUTE_CONNECTIONS.value) """Compute nearest neighbor connections per site label.""" self.connections = get_site_connections( [ @@ -403,7 +419,9 @@ def get_polyhedron_labels_by_CN_best_methods( ) @ensure_connections - def plot_polyhedron(self, site_label, is_displayed=False, output_dir=None): + def plot_polyhedron( + self, site_label, show_labels=True, is_displayed=False, output_dir=None + ): coords, vertex_labels = get_polyhedron_coordinates_labels( self.CN_connections_by_best_methods, site_label ) @@ -412,6 +430,7 @@ def plot_polyhedron(self, site_label, is_displayed=False, output_dir=None): vertex_labels, self.file_path, self.formula, + show_labels, is_displayed, output_dir, ) diff --git a/src/cifkit/utils/log_messages.py b/src/cifkit/utils/log_messages.py new file mode 100644 index 0000000..52ef286 --- /dev/null +++ b/src/cifkit/utils/log_messages.py @@ -0,0 +1,7 @@ +from enum import Enum + + +class CifLog(Enum): + PREPROCESSING = "Preprocessing {file_path}" + LOADING_DATA = "Parsing .cif file and generating a supercell" + COMPUTE_CONNECTIONS = "Computing pair distances and coordination numbers" diff --git a/tests/conftest.py b/tests/conftest.py index 60ff2c1..48b3aa6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -7,9 +7,8 @@ from cifkit.utils import cif_parser, folder from cifkit import Cif from cifkit import CifEnsemble -from cifkit.preprocessors import environment from cifkit.coordination import composition -from cifkit.coordination import method, filter +from cifkit.coordination import filter """ CifEnsemble - histogram test diff --git a/tests/core/models/test_cif.py b/tests/core/models/test_cif.py index 0c102ea..f98a329 100644 --- a/tests/core/models/test_cif.py +++ b/tests/core/models/test_cif.py @@ -1,8 +1,10 @@ import os import shutil import pytest +import logging from cifkit import Cif from cifkit.utils.error_messages import CifParserError +from cifkit.utils.log_messages import CifLog from cifkit.utils import folder @@ -90,6 +92,38 @@ def test_lazy_loading(cif_URhIn): assert cif_URhIn.connections is not None +""" +Test log +""" + + +@pytest.mark.fast +def test_init_log(caplog): + file_path = "tests/data/cif/URhIn.cif" + cif = Cif(file_path, logging_enabled=True) + + with caplog.at_level(logging.INFO): + assert ( + CifLog.PREPROCESSING.value.format(file_path=file_path) + in caplog.text + ) + + assert CifLog.LOADING_DATA.value in caplog.text + + cif.compute_connections() + with caplog.at_level(logging.INFO): + assert CifLog.COMPUTE_CONNECTIONS.value in caplog.text + + +@pytest.mark.fast +def test_init_no_log(caplog): + file_path = "tests/data/cif/URhIn.cif" + Cif(file_path) + + with caplog.at_level(logging.INFO): + assert caplog.text == "" + + @pytest.mark.fast def test_shortest_distance(cif_URhIn): assert cif_URhIn.shortest_distance == 2.697 @@ -342,10 +376,6 @@ def test_plot_polyhedron_default_output_folder(cif_URhIn): expected_output_dir = "tests/data/cif/polyhedrons" output_file_path = os.path.join(expected_output_dir, "URhIn_In1.png") - # Ensure the directory exists - if not os.path.exists(expected_output_dir): - os.makedirs(expected_output_dir) - # Define the output file path cif_URhIn.plot_polyhedron("In1") @@ -359,13 +389,9 @@ def test_plot_polyhedron_with_output_folder_given(cif_URhIn): expected_output_dir = "tests/data/cif/polyhedrons_user" output_file_path = os.path.join(expected_output_dir, "URhIn_In1.png") - # Ensure the directory exists - if not os.path.exists(expected_output_dir): - os.makedirs(expected_output_dir) - # Define the output file path cif_URhIn.plot_polyhedron( - "In1", is_displayed=True, output_dir="tests/data/cif/polyhedrons_user" + "In1", is_displayed=False, output_dir="tests/data/cif/polyhedrons_user" ) assert os.path.exists(output_file_path) @@ -378,16 +404,12 @@ def test_plot_polyhedrons(cif_ensemble_test): # Define the directory to store the output expected_output_dir = "tests/data/cif/ensemble_test/polyhedrons" # Ensure the directory exists - if not os.path.exists(expected_output_dir): - os.makedirs(expected_output_dir) cifs = cif_ensemble_test.cifs for cif in cifs: labels = cif.site_labels - print("Label from the cif object") - print(labels) for label in labels: - cif.plot_polyhedron(label) + cif.plot_polyhedron(label, show_labels=True) # Check the number of files image_file_count = folder.get_file_count(expected_output_dir, ".png") diff --git a/tests/data/cif/ensemble_test/polyhedrons/250697_Mo.png b/tests/data/cif/ensemble_test/polyhedrons/250697_Mo.png deleted file mode 100644 index 4d1cdae..0000000 Binary files a/tests/data/cif/ensemble_test/polyhedrons/250697_Mo.png and /dev/null differ diff --git a/tests/data/cif/ensemble_test/polyhedrons/250709_Mo.png b/tests/data/cif/ensemble_test/polyhedrons/250709_Mo.png deleted file mode 100644 index 29a48cb..0000000 Binary files a/tests/data/cif/ensemble_test/polyhedrons/250709_Mo.png and /dev/null differ diff --git a/tests/data/cif/ensemble_test/polyhedrons/260171_Mo.png b/tests/data/cif/ensemble_test/polyhedrons/260171_Mo.png deleted file mode 100644 index 442d96c..0000000 Binary files a/tests/data/cif/ensemble_test/polyhedrons/260171_Mo.png and /dev/null differ diff --git a/tests/data/cif/ensemble_test/polyhedrons/300169_Ge1.png b/tests/data/cif/ensemble_test/polyhedrons/300169_Ge1.png deleted file mode 100644 index ff7ce2d..0000000 Binary files a/tests/data/cif/ensemble_test/polyhedrons/300169_Ge1.png and /dev/null differ diff --git a/tests/data/cif/ensemble_test/polyhedrons/300169_La1.png b/tests/data/cif/ensemble_test/polyhedrons/300169_La1.png deleted file mode 100644 index 89729f7..0000000 Binary files a/tests/data/cif/ensemble_test/polyhedrons/300169_La1.png and /dev/null differ diff --git a/tests/data/cif/ensemble_test/polyhedrons/300169_Ru1.png b/tests/data/cif/ensemble_test/polyhedrons/300169_Ru1.png deleted file mode 100644 index 2a8c429..0000000 Binary files a/tests/data/cif/ensemble_test/polyhedrons/300169_Ru1.png and /dev/null differ diff --git a/tests/data/cif/ensemble_test/polyhedrons/300170_Ce1.png b/tests/data/cif/ensemble_test/polyhedrons/300170_Ce1.png deleted file mode 100644 index eb743fe..0000000 Binary files a/tests/data/cif/ensemble_test/polyhedrons/300170_Ce1.png and /dev/null differ diff --git a/tests/data/cif/ensemble_test/polyhedrons/300170_Ge1.png b/tests/data/cif/ensemble_test/polyhedrons/300170_Ge1.png deleted file mode 100644 index 425dfb6..0000000 Binary files a/tests/data/cif/ensemble_test/polyhedrons/300170_Ge1.png and /dev/null differ diff --git a/tests/data/cif/ensemble_test/polyhedrons/300170_Ru1.png b/tests/data/cif/ensemble_test/polyhedrons/300170_Ru1.png deleted file mode 100644 index 42def31..0000000 Binary files a/tests/data/cif/ensemble_test/polyhedrons/300170_Ru1.png and /dev/null differ diff --git a/tests/data/cif/ensemble_test/polyhedrons/300171_Eu1.png b/tests/data/cif/ensemble_test/polyhedrons/300171_Eu1.png deleted file mode 100644 index 77bae33..0000000 Binary files a/tests/data/cif/ensemble_test/polyhedrons/300171_Eu1.png and /dev/null differ diff --git a/tests/data/cif/ensemble_test/polyhedrons/300171_Ge1.png b/tests/data/cif/ensemble_test/polyhedrons/300171_Ge1.png deleted file mode 100644 index 8f82ea7..0000000 Binary files a/tests/data/cif/ensemble_test/polyhedrons/300171_Ge1.png and /dev/null differ diff --git a/tests/data/cif/ensemble_test/polyhedrons/300171_Ir1.png b/tests/data/cif/ensemble_test/polyhedrons/300171_Ir1.png deleted file mode 100644 index f7dd59b..0000000 Binary files a/tests/data/cif/ensemble_test/polyhedrons/300171_Ir1.png and /dev/null differ diff --git a/tests/data/cif/polyhedrons_user/URhIn_In1.png b/tests/data/cif/polyhedrons_user/URhIn_In1.png new file mode 100644 index 0000000..e69de29